класс DRb::DRbUnknown
Класс, оборачивающий сериализованный объект, тип которого локально неизвестен.
Если метод, вызванный через drb, возвращает объект, но его класс неизвестен в пространстве имен клиента, или объект является константой, неизвестной в пространстве имен клиента, то ещё сериализованный объект возвращается, обернутый в экземпляр DRbUnknown.
Если этот объект передаётся в качестве аргумента методу, вызванному через drb, то вместо него передаётся обернутый объект.
Имя класса или константы объекта можно прочитать из атрибута name. Сериализованный объект хранится в атрибуте buf.
Атрибуты
Буфер, содержащий сериализованный, неизвестный объект.
Имя неизвестного объекта.
Имя класса для неизвестных объектов; имя переменной для неизвестных констант.
Публичные Классовые Методы
# File lib/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 Создать новый объект DRbUnknown.
buf — строка, содержащая сериализованный объект, который не удалось десериализовать. err — сообщение об ошибке, которое было выброшено при неудачной десериализации. Оно используется для определения имени десериализованного объекта.
Публичные Методы Экземпляров
# File lib/drb/drb.rb, line 509 def exception DRbUnknownError.new(self) end
Создать исключение DRbUnknownError, содержащее этот объект.
# File lib/drb/drb.rb, line 504 def reload self.class._load(@buf) end
Попробовать загрузить обернутый сериализованный объект снова.
Если класс объекта теперь известен локально, объект будет десериализован и возвращён. В противном случае будет возвращён новый, но идентичный объект DRbUnknown.
Ruby Core © 1993–2017 Yukihiro Matsumoto
Licensed under the Ruby License.
Ruby Standard Library © contributors
Licensed under their own licenses.