class Foo
include Module.new { class_eval "def lab; puts 'm' end" }
def lab
super
puts 'c'
end
end
Foo.new.lab #=> m c
================================= =============================================
class Foo
include Module.new { instance_eval "def lab; puts 'm' end" }
def lab
super
puts 'c'
end
end
Обратите внимание, здесь я изменил class_eval на instance_eval
Foo.new.lab rescue nil#=> no super class method lab
Foo.lab #=> undefined method lab for Foo class
Таким образом, кажется, что включение модуля не определило ни метод экземпляра, ни метод класса.
Любое объяснение, что здесь происходит?
Этот код был протестирован на ruby 1.8.7 на mac.