From: Joel VanderWerf Date: 2011-06-04T02:44:01+09:00 Subject: [ruby-core:36723] Re: [Ruby 1.9 - Feature #4818][Open] Add method marshalable? On 06/02/2011 07:07 PM, Joey Zhou wrote: > Some objects can not be marshaled. Maybe there should be a method to tell it. > > hash = Hash.new {|h,k| k * 2} > > this hash can't be marshaled because it has a default proc. If existing such method: > > Marshal.marshalable?(hash) #=> method "Marshal.marshalable?" > hash.marshalable? #=> method "Kernel#marshalable?" What would it do in this case? hash = Hash.new {|h,k| k * 2} [hash].marshalable? So the method needs to recurse arbitrarily deep. So #marshalable will need to know just as much as Marshal.dump itself does about the object references contained in an object. Abstracting this out of Marshal.dump will be complex and will depend on external libraries and gems, which do custom dumping. Why not just marshal and rescue?