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.