From: elbows@... (Nathan Weston) Date: 2003-11-29T08:07:12+09:00 Subject: Re: Marshalling delegates [RESOLVED] After digging around a bit in the delegate source, I fixed the problem like this: class MarshalDelegator < SimpleDelegator alias :make_methods :initialize def marshal_dump return @obj end def marshal_load(obj) initialize(obj) end end To marshal, the delegator just dumps the object it is delegating for. To unmarshal, it loads that object, and sets up the wrapper methods by calling initialize. matz@ruby-lang.org (Yukihiro Matsumoto) wrote in message news:<1069385366.583829.29360.nullmailer@picachu.netlab.jp>... > Hi, > > In message "Marshalling delegates" > on 03/11/21, Nathan Weston writes: > > |I can't seem to marshal a delegate. The code below: > | > |class Foo < SimpleDelegate > |end > | > |Marshal.dump(Foo.new(nil)) > | > |Gives me an error: > |TypeError: singleton can't be dumped > | > |The weird thing is that defining _dump or marshal_dump in Foo doesn't > |make this problem go away. > > It's a bug in 1.8.0. Soon to be fixed. Thank you. > > matz.