Module DRb::UndumpedAttributes
In: lib/drb/undumped_attributes.rb

Methods

Public Class methods

[Source]

# 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

[Source]

# 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

Public Instance methods

[Source]

# 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

[Validate]