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?
Hi,
In message “Re: marshal_load, marshal_dump”
on Sun, 14 Dec 2008 07:36:18 +0900, Tim H. [email protected]
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.
On Dec 13, 2008, at 14:36 PM, Tim H. 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.
On Dec 15, 2008, at 17:20 PM, Tim H. wrote:
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.
Eric H. wrote:
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.
Eric H. wrote:
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 H. 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©
p Marshal.load(s)