From: Yukihiro Matsumoto Date: 2011-12-14T05:53:04+09:00 Subject: [ruby-dev:44991] [ruby-trunk - Bug #5748] class_eval ブロック内での定数のスコープがドキュメントと矛盾 Issue #5748 has been updated by Yukihiro Matsumoto. ドキュメントの間違いです。class_evalは定数の探索経路を変えません。 ---------------------------------------- Bug #5748: class_eval ブロック内での定数のスコープがドキュメントと矛盾 http://redmine.ruby-lang.org/issues/5748 Author: Yasunori Miyamoto Status: Open Priority: Normal Assignee: Category: Target version: 1.9.3 ruby -v: ruby 1.9.3p0 (2011-10-30) [i386-mingw32] 以下の class_eval の説明によると、 http://doc.ruby-lang.org/ja/1.9.3/method/Module/i/class_eval.html > 定数とクラス変数のスコープは、自身のモジュール定義式内と同じスコープになります。 とのことですが、以下のコードを実行すると NameError が発生します。 class MyClass CONST = "MyClass" end MyClass.class_eval do p CONST # => NameError end 実行結果: test.rb:6:in `block in
': uninitialized constant CONST (NameError) from test.rb:5:in `class_eval' from test.rb:5:in `
' 期待した結果: "MyClass" と表示される。 -- http://redmine.ruby-lang.org