【发布时间】:2011-02-18 08:56:59
【问题描述】:
这是一个很大的提交。但我希望你专注于这个变更块。 http://github.com/rails/rails/commit/d916c62cfc7c59ab6411407a05b946d3dd7535e9#L2L1304
即使不了解代码的完整上下文,我也无法想到我会使用的场景
include Module.new {
class_eval <<-RUBY
def foo
puts 'foo'
end
RUBY
}
最终结果是在根上下文中(include Module.new 之前的 self)添加了一个名为 foo 的方法。
如果我取出Module.new 代码,如果我只留下class_eval 在这种情况下,我也会在self 中有一个名为foo 的方法。
我错过了什么。
【问题讨论】:
标签: ruby-on-rails ruby metaprogramming