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/
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?
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