what happend to the constant lookup rules in ruby 1.9? It seems
constants in blocks that are evaluated with instance_eval are looked up
only in the evaluating class but not in the scope the block was defined.
This works in Ruby 1.8 but not in 1.9:
···
======================================
class X
def run(&block)
instance_eval(&block)
end
end
module A
I_AM_NOT_FOUND = 666
a = X.new
a.run {
puts I_AM_NOT_FOUND
}
end
Ruby 1.8 finds the constants only if they are in the scope where the
block is defined. Why was this behaviour changed?