From: Yusuke Endoh Date: 2010-06-16T02:00:04+09:00 Subject: [ruby-dev:41613] [Bug #3445] 1.9.2-preview3 で Object#extend すると public_methods(false) からメソッド名が消える Bug #3445: 1.9.2-preview3 で Object#extend すると public_methods(false) からメソッド名が消える http://redmine.ruby-lang.org/issues/show/3445 起票者: Yusuke Endoh ステータス: Open, 優先度: Normal カテゴリ: core, Target version: 1.9.2 ruby -v: 1.9.2-preview3 [ruby-dev:41553] が redmine ML 連携の不調でチケット化されなかった ようなので、手動で登録します。 ----- 近永と申します。 1.9.2-preview3 および trunk にて、以下のように Object#extend すると public_methods(false) で返すメソッドリストから元々あったメソッドが消えます。 これは仕様変更でしょうか? 1.9.1 および 1.9.2-preview1 では どちらも元のメソッド + extend したモジュールの public メソッドを返していました。 NEWS ファイルはざっと目を通しましたが該当しそうなところは見つけられませんでした。 module M def m1; end def m2; end module_function :m2 end class A def a; end end obj = A.new p obj.public_methods(false) # => [:a] obj.extend(M) p obj.public_methods(false) # => trunk, 1.9.2-preview3 => [] # => 1.9.1, 1.9.2-preview1 => [:m1, :a] -- Chikanaga Tomoyuki Nippon Control System Corp. ---------------------------------------- http://redmine.ruby-lang.org