class Foo
include Module.new { class_eval "def lab; puts 'm' end" }
def lab
super
puts 'c'
end
end
Foo.new.lab #=> m c
======================================= =================================instance_eval vs class_eval en el módulo
class Foo
include Module.new { instance_eval "def lab; puts 'm' end" }
def lab
super
puts 'c'
end
end
Aviso aquí me cambió class_eval a instance_eval
Foo.new.lab rescue nil#=> no super class method lab
Foo.lab #=> undefined method lab for Foo class
Parece que incluir el módulo no definió un método de instancia ni un método de clase.
¿Alguna explicación de lo que está pasando aquí?
Este código fue probado en ruby 1.8.7 en mac.
excelente explicación. dividir las cosas y mirarlas un paso a la vez ayuda. –