DRb::DRbUnknown 类

包装一个已编组的对象,其类型在本地未知。

如果一个对象是由通过 DRB 调用的方法返回的,但该对象的类在客户端名称空间中未知,或者该对象是客户端名称空间中未知的常量,那么仍然编组的对象将被包装在 DRbUnknown 实例中返回。

如果此对象作为参数传递给通过 DRB 调用的方法,则会传递包装的对象。

对象的类或常量名称可以从 name 属性中读取。已编组的对象保存在 buf 属性中。

属性

buf[R]

包含已编组的未知对象的缓冲区。

name[R]

未知事物的名称。

未知对象的名称;未知常量的变量名称。

公共类方法

new(err, buf) 点击切换源

创建一个新的 DRbUnknown 对象。

buf 是一个包含无法取消编组的已编组对象的字符串。err 是取消编组失败时引发的错误消息。它用于确定已编组对象的名称。

# File lib/drb/drb.rb, line 465
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

公共实例方法

exception() 点击切换源

创建一个包含此对象的 DRbUnknownError 异常。

# File lib/drb/drb.rb, line 508
def exception
  DRbUnknownError.new(self)
end
reload() 点击切换源

尝试再次加载包装的已编组对象。

如果对象的类现在在本地已知,则该对象将被取消编组并返回。否则,将返回一个新的但相同的 DRbUnknown 对象。

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