類別 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