Hi

I'm using Marshal to serialise objects, and I'm defining a custom
serialisation strategy for a class. However, I want the class to still
be able to use the default serialisation provided by Marshal under
some circumstances.

My first (stupid) thought was to re-call Marshal.dump(self) in my
custom _dump method. This just causes a recursion error.

Then I thought of calling super() in the custom _dump method, but I
get the error "no superclass method: _dump", so I guess there isn't an
underlying _dump method in Object.

Finally, I got a bit further by removing the custom _dump method
before re-calling Marshal.dump(self). However, having removed it, and
got the default serialisation of my object, I don't know how to put
the method back, and my class is broken:


    def _dump(depth)
        if depth < -2
            return stub() # a method that returns a serialised stub
        end

        self.class.class_eval { undef_method :_dump }
        serial = Marshal.dump(self) # use default serialisation
        ???? >> how do i restore this :_dump method now?
        
        return serial
    end

Thanks for any help
Alex Fenton
__
alex / pressure.to