モルです。

以前、似たようなスレッドがあったのですが、仕様ではないっぽいです。

ruby-list:47079

参照ください。

--
Moru DRS



2010/12/17 KISHIMOTO, Makoto <ksmakoto / dd.iij4u.or.jp>:
> きしもとです
>
> これって仕様なのでしょうか?
> ruby 1.8 と ruby 1.9 で動作が違います。
>
> $ cat hoge.rb
> module M;A=1;end
> M.module_eval{Module.constants.each{|c|eval c.to_s}}
>
> $ ruby -v hoge.rb
> ruby 1.8.7 (2009-12-24 patchlevel 248) [amd64-freebsd8]
>
> $ ruby19 -v hoge.rb
> ruby 1.9.3dev (2010-12-16 trunk 30224) [x86_64-freebsd8.2]
> hoge.rb:2:in `eval': uninitialized constant Module::A (NameError)
>    from hoge.rb:2:in `eval'
>    from hoge.rb:2:in `block (2 levels) in <main>'
>    from hoge.rb:2:in `each'
>    from hoge.rb:2:in `block in <main>'
>    from hoge.rb:2:in `module_eval'
>    from hoge.rb:2:in `<main>'
>
>