| Module | DRb::UndumpedAttributes |
| In: |
lib/drb/undumped_attributes.rb
|
# File lib/drb/undumped_attributes.rb, line 41 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
# File lib/drb/undumped_attributes.rb, line 16 def UndumpedAttributes.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
# File lib/drb/undumped_attributes.rb, line 20 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