Ruby treats local variables differently inside def
and inside define_method
:
class MyClass
y = 2
def foo
y ||= 0
puts y
end
define_method :bar do
y ||= 0
puts y
end
end
my_class = MyClass.new
my_class.foo # => 0
my_class.bar # => 2
I am wondering why.