我正在學習如何在模塊中使用class_eval(我對class_eval有點熟悉),並且遇到了this helpful class in resource_controller。在那裏,他們有這樣的事情:在Ruby中,class_eval << - 「end_eval」,__FILE__,__LINE__是什麼意思?
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) – 2013-01-31 19:49:20