In Files

  • drb/drb.rb

Parent

DRb::DRbUnknown

Class wrapping a marshalled object whose type is unknown locally.

If an object is returned by a method invoked over drb, but the class of the object is unknown in the client namespace, or the object is a constant unknown in the client namespace, then the still-marshalled object is returned wrapped in a DRbUnknown instance.

If this object is passed as an argument to a method invoked over drb, then the wrapped object is passed instead.

The class or constant name of the object can be read from the name attribute. The marshalled object is held in the buf attribute.

Attributes

buf[R]

Buffer contained the marshalled, unknown object.

name[R]

The name of the unknown thing.

Class name for unknown objects; variable name for unknown constants.

Public Class Methods

new(err, buf) click to toggle source

Create a new DRbUnknown object.

buf is a string containing a marshalled object that could not be unmarshalled. err is the error message that was raised when the unmarshalling failed. It is used to determine the name of the unmarshalled object.

 
               # File drb/drb.rb, line 466
def initialize(err, buf)
  case err.to_s
  when /uninitialized constant (\S+)/
    @name = $1
  when /undefined class\/module (\S+)/
    @name = $1
  else
    @name = nil
  end
  @buf = buf
end
            

Public Instance Methods

exception() click to toggle source

Create a DRbUnknownError exception containing this object.

 
               # File drb/drb.rb, line 509
def exception
  DRbUnknownError.new(self)
end
            
reload() click to toggle source

Attempt to load the wrapped marshalled object again.

If the class of the object is now known locally, the object will be unmarshalled and returned. Otherwise, a new but identical DRbUnknown object will be returned.

 
               # File drb/drb.rb, line 504
def reload
  self.class._load(@buf)
end
            

Commenting is here to help enhance the documentation. For example, code samples, or clarification of the documentation.

If you have questions about Ruby or the documentation, please post to one of the Ruby mailing lists. You will get better, faster, help that way.

If you wish to post a correction of the docs, please do so, but also file bug report so that it can be corrected for the next release. Thank you.

If you want to help improve the Ruby documentation, please visit Documenting-ruby.org.

blog comments powered by Disqus