From: m_seki@... Date: 2001-04-11T12:54:02+09:00 Subject: [ruby-dev:12873] Re: 1.6.4 preview 咳といいます。 matz> |未知のクラスをloadしようとしたときの例外のメッセージなんですが、 matz> |loadの場所(環境? コンテキスト?)によってクラス名が変わるように matz> |なりましたっけ?? matz> matz> 変えた覚えは無いんですけど。再現するスクリプトが作れますか? 末尾の w.rb と r.rb です。 w.rb で dump というファイルを作って r.rb でそれを読みます。 従来版(1.6.1)の動作結果は次の通りで、Know を知りません。 # 1.6.3は試せなかったのですが、drbunit.rb が通ったところをみると # この動作だと思います。 % ruby -v ruby 1.6.1 (2000-10-02) [mips-irix6.5] % ruby w.rb % ruby r.rb (eval):4:in `load': (eval):4:in `load': uninitialized constant Know (NameError) from r.rb:4:in `load_it' from r.rb:15 from r.rb:14:in `open' from r.rb:14 1.6.4 preview では次の通りで、M1::M2::Know を知らないと言います。 % ruby -v ruby 1.6.4 (2001-04-10) [i686-linux] % ruby w.rb % ruby r.rb (eval):4:in `load': (eval):4:in `load': uninitialized constant M1::M2::Know (NameError) from r.rb:4:in `load_it' from r.rb:15 from r.rb:14:in `open' from r.rb:14 ---- # w.rb class Know def initialize @know = 'no' end end File.open('dump', 'w') do |fp| Marshal.dump(Know.new, fp) end ---- # r.rb module M1 module M2 def load_it(fp) Marshal.load(fp) end end class C1 include M2 end end c1 = M1::C1.new File.open('dump') do |fp| c1.load_it(fp) end