Marshal_load, marshal_dump

Currently RMagick uses the old _dump and _load methods to marshal/unmarshal images. I'd like to start using the new marshal_load and marshal_dump methods. What is the impact of switching? Can I just replace _dump and _load with marshal_dump and marshal_load? Suppose I have an image that was dumped using an old version of RMagick. How do I support loading it?

···

--
RMagick: http://rmagick.rubyforge.org/

Hi,

···

In message "Re: marshal_load, marshal_dump" on Sun, 14 Dec 2008 07:36:18 +0900, Tim Hunter <TimHunter@nc.rr.com> writes:

Currently RMagick uses the old _dump and _load methods to
marshal/unmarshal images. I'd like to start using the new marshal_load
and marshal_dump methods. What is the impact of switching? Can I just
replace _dump and _load with marshal_dump and marshal_load? Suppose I
have an image that was dumped using an old version of RMagick. How do I
support loading it?

marshal_dump has high priority over _dump, so you can keep _load as
long as you want backward compatibility.

              matz.

Note that _dump/_load occurs before allocate and marshal_dump/marshal_load occurs after. In some instances this is an important distinction.

···

On Dec 13, 2008, at 14:36 PM, Tim Hunter wrote:

Currently RMagick uses the old _dump and _load methods to marshal/unmarshal images. I'd like to start using the new marshal_load and marshal_dump methods. What is the impact of switching? Can I just replace _dump and _load with marshal_dump and marshal_load? Suppose I have an image that was dumped using an old version of RMagick. How do I support loading it?

Eric Hodel wrote:

···

On Dec 13, 2008, at 14:36 PM, Tim Hunter wrote:

Currently RMagick uses the old _dump and _load methods to marshal/unmarshal images. I'd like to start using the new marshal_load and marshal_dump methods. What is the impact of switching? Can I just replace _dump and _load with marshal_dump and marshal_load? Suppose I have an image that was dumped using an old version of RMagick. How do I support loading it?

Note that _dump/_load occurs before allocate and marshal_dump/marshal_load occurs after. In some instances this is an important distinction.

Absolutely. I wish I could find some examples of custom marshal_dump/marshal_load implementations. Searching thru the 1.8.7/1.9.1 sources didn't turn up anything illuminating.

--
RMagick: http://rmagick.rubyforge.org/

Look in RubyGems. Gem::Specification, Gem::Version and Gem::Requirement have custom marshal methods.

···

On Dec 15, 2008, at 17:20 PM, Tim Hunter wrote:

Eric Hodel wrote:

On Dec 13, 2008, at 14:36 PM, Tim Hunter wrote:

Currently RMagick uses the old _dump and _load methods to marshal/unmarshal images. I'd like to start using the new marshal_load and marshal_dump methods. What is the impact of switching? Can I just replace _dump and _load with marshal_dump and marshal_load? Suppose I have an image that was dumped using an old version of RMagick. How do I support loading it?

Note that _dump/_load occurs before allocate and marshal_dump/marshal_load occurs after. In some instances this is an important distinction.

Absolutely. I wish I could find some examples of custom marshal_dump/marshal_load implementations. Searching thru the 1.8.7/1.9.1 sources didn't turn up anything illuminating.

Tim Hunter wrote:

Absolutely. I wish I could find some examples of custom marshal_dump/marshal_load implementations. Searching thru the 1.8.7/1.9.1 sources didn't turn up anything illuminating.

A very simple one:

class C
   attr_accessor :x, :y

   def marshal_dump
     [x, y]
   end

   def marshal_load(ary)
     @x, @y = ary
   end
end

c = C.new
c.x = "foo"
c.y = "bar"

s = Marshal.dump(c)
p Marshal.load(s)

···

--
       vjoel : Joel VanderWerf : path berkeley edu : 510 665 3407

Eric Hodel wrote:

···

On Dec 15, 2008, at 17:20 PM, Tim Hunter wrote:

Eric Hodel wrote:

On Dec 13, 2008, at 14:36 PM, Tim Hunter wrote:

Currently RMagick uses the old _dump and _load methods to marshal/unmarshal images. I'd like to start using the new marshal_load and marshal_dump methods. What is the impact of switching? Can I just replace _dump and _load with marshal_dump and marshal_load? Suppose I have an image that was dumped using an old version of RMagick. How do I support loading it?

Note that _dump/_load occurs before allocate and marshal_dump/marshal_load occurs after. In some instances this is an important distinction.

Absolutely. I wish I could find some examples of custom marshal_dump/marshal_load implementations. Searching thru the 1.8.7/1.9.1 sources didn't turn up anything illuminating.

Look in RubyGems. Gem::Specification, Gem::Version and Gem::Requirement have custom marshal methods.

Excellent! Thanks for the pointer.

--
RMagick: http://rmagick.rubyforge.org/