From: Koji Arai Date: 2003-08-04T17:23:28+09:00 Subject: [ruby-dev:21122] Re: Marshal upgrade 新井です。 In message "[ruby-dev:21112] Re: Marshal upgrade" on 04 Aug 2003 13:07:20 +0900, matz@ruby-lang.org (Yukihiro Matsumoto) wrote: > まつもと ゆきひろです > > リリースの日にデバッグというのもイヤなものですが。 > > In message "[ruby-dev:21106] Re: Marshal upgrade" > on 03/08/03, Koji Arai writes: > > |require "delegate" > | > |class C < SimpleDelegator > | def initialize(obj=nil) > | super(obj || "A") > | end > | def marshal_dump > | __getobj__ > | end > | def marshal_load(obj) > | initialize(obj) > | end > |end > | > |Marshal.dump(C.new) > | > |などとしても、 > | > |-:15:in `dump': singleton can't be dumped (TypeError) > | from -:15 > |ruby 1.8.0 (2003-08-03) [i586-linux] > | > |だめですね。ちょっと悲しい。 > > ふむ。marshal_dumpを使った場合にはw_extendedを通らないように > しましょう。 うまく行っているようです。ありがとうございます。 require 'delegate.rb' class Delegator def marshal_dump __getobj__ end def marshal_load(obj) initialize(obj) end end class C < SimpleDelegator end obj = C.new("A") p Marshal.load(Marshal.dump(obj)) => ruby 1.8.0 (2003-08-04) [i586-linux] "A" -- 新井康司 (Koji Arai)