From: Tanaka Akira Date: 2004-09-10T00:48:32+09:00 Subject: [ruby-dev:24243] Re: private load and Module.nesting In article <1094424793.536529.10888.nullmailer@picachu.netlab.jp>, Yukihiro Matsumoto writes: > |次のように、private に load されているファイル (s.rb) 内で require し > |たライブラリ (t.rb) で定義されている関数 (test) で Module.nesting を呼 > |び出すと、初回だけ空で、それ以降は無名モジュールを要素とする配列が返っ > |て来るのですが、このように返値が初回とそれ以降で異なるのは意図された挙 > |動でしょうか? > > バグです。レポートありがとうございました。 Module.nesting の返値に無名モジュールが常に入るようになったので、返値 が初回とそれ以降で変わるという挙動はなくなりました。 ただ、よく分からないのですが、Module.nesting の先頭というのは、def で メソッドが定義される対象とは限らないのでしょうか? 次のようにすると、def が Module.nesting の先頭の無名モジュールではなく、 Object に定義されることが観測されます。 % cat t.rb def test p Module.nesting def xxx p :xxx end p method(:xxx) end % cat s.rb require 't.rb' test % ruby -e 'load "s.rb", true' [#] # -- [田中 哲][たなか あきら][Tanaka Akira]