From: shugo@... Date: 2015-02-05T04:13:33+00:00 Subject: [ruby-core:68017] [ruby-trunk - Feature #10773] [Rejected] nested module should work in instance_eval Issue #10773 has been updated by Shugo Maeda. Status changed from Open to Rejected It's an expected behavior that instance_eval doesn't affect constant lookup. Constant lookup is designted to be as static as possible. ---------------------------------------- Feature #10773: nested module should work in instance_eval https://bugs.ruby-lang.org/issues/10773#change-51404 * Author: roro co * Status: Rejected * Priority: Normal * Assignee: ---------------------------------------- see my code: ~~~ module M module M2 end end class C include M def ivk_m2(*args, &blk) M2 end end C.new.ivk_m2 # work C.new.instance_eval do meth_in_m # work M2 # not work end ~~~ and output ~~~ Uncaught exception: uninitialized constant M2 /home/roroco/Dropbox/rbs/ro_btc/exe.rb:22:in `block in ' /home/roroco/Dropbox/rbs/ro_btc/exe.rb:20:in `instance_eval' /home/roroco/Dropbox/rbs/ro_btc/exe.rb:20:in `' ~~~ in above code, i think ```C.new.instance { M2 }``` should invoke M::M2 in syntax since it's in "instance block" or "main" -- https://bugs.ruby-lang.org/