모듈에서 class_eval을 사용하는 방법을 배우고 있는데 (나는 class_eval에 다소 익숙합니다) this helpful class in resource_controller을 발견했습니다. 거기에서 그들은이 같은 일이 :class_eval << - "end_eval", __FILE__, __LINE__은 Ruby에서 무엇을 의미합니까?
class_eval <<-"end_eval", __FILE__, __LINE__
def #{block_accessor}(*args, &block)
unless args.empty? && block.nil?
args.push block if block_given?
@#{block_accessor} = [args].flatten
end
@#{block_accessor}
end
end_eval
는 __FILE__
및 __LINE__
그 상황에서 무엇입니까? 나는 __FILE__
가 현재 파일을 참조한다는 것을 알고 있지만 그 모든 일이 정확히 무엇을 하는가? 그걸 검색하는 방법을 모른다. :)
대신'define_method'를 사용하면 이런 종류의 트릭이 필요하지 않을 수도 있습니다. 취약점을 공개하지 않습니다 (http://stackoverflow.com/questions/3003328/how-do-i-use-class-eval/3003509#3003509 참조). –