marshal vs yaml

I notice how Rails makes heavy use of YAML serialization, but a lot of the Ruby literature I come across places emphasis on Marshal. One powerful technique with marshal is the marshal_dump and marshal_load hooks used to customize storing and retrieving object states. For example, let’s say I have an object that can store as instance variables an arbitrary array of integers. And let’s say I simply want to marshal that array rather than the whole object state, and then later retrieve that data and store it into an allocated but unitialized new instance of the object. Then the marshal_dump and marshal_load hooks come in handy:

class Point

def initialize(*coords)

@coords = coords

end

def marshal_dump

@coords.pack(“w*”)

end

def marshal_load(s)

@coords = s.unpack(“w*”)

end

end

Is there a more effective way to achieve something like this in YAML that the Rails community prefers?

Different tools for different purposes. YAML makes it easy for a
*human* looking at something, to tell what's what, and modify it in a
way that probably won't screw everything up. Marshalled data is
generally not intended for human viewing, let alone editing, only for
efficient reloading.

-Dave