Sha256: 8344e5b4add0ad510d56bbfa3d25073bbaacc41ce29c28ad30d8ce564471c01c
Contents?: true
Size: 1.41 KB
Versions: 4
Compression:
Stored size: 1.41 KB
Contents
# Copyright: Copyright (c) 2004 Nicolas Despres. All rights reserved. # Author: Nicolas Despres <polrop@lrde.epita.fr>. # License: Gnu General Public License. # $LastChangedBy: polrop $ # $Id: drb_undumped_attributes.rb 88 2005-01-09 21:11:26Z polrop $ require 'drb/drb' module DRb module DRbUndumpedAttributes def DRbUndumpedAttributes.append_features(cl) super cl.module_eval do def _dump(depth) if self.class.include?(DRb::DRbUndumped) raise(TypeError, 'can\'t dump') end attribs = {} instance_variables.each do |attr| obj = instance_variable_get(attr) begin attribs[attr] = Marshal.dump(obj) rescue TypeError if (defined? LOG) and (not obj.class.include? DRb::DRbUndumped) LOG.warn("#{self.class}._dump") do "can't dump a #{attr}:#{obj.class}" end end attribs[attr] = Marshal.dump(DRbObject.new(obj)) end end Marshal.dump([self.class, attribs]) end def self._load(data) klass, attribs = Marshal.load(data) obj = klass.new attribs.each do |attr, value| obj.instance_variable_set(attr, Marshal.load(value)) end obj end end end end # module DRbUndumpedAttributes end # module DRb
Version data entries
4 entries across 4 versions & 2 rubygems