Это? и объекты dRuby
Я работаю с dRuby и в основном вызываю удаленный метод, который возвращает мне объект.
В клиентской части у меня есть этот код:
handle_error(response) if response.is_a?(Error)
где ответом является DRbObject. (Я разработал этот код перед использованием dRuby и возвращаю объект Error, если что-то пошло не так). Проблема в том, что сейчас
response.is_a?(Error)
возвращается с "ложью", потому что объект на самом деле является DRbObject. Любая идея о том, как я могу проверить класс моего объекта приложения?
Спасибо! Роберто
2 ответа
Хотя я не уверен, как DRb управляет удаленными объектами, я ожидал бы, что он изменит #kind_of? сохранить иерархию классов на удаленном объекте, чтобы вы могли сделать:
response.kind_of?(Error)
Если это не работает, вы всегда можете спросить его, отвечает ли он определенному методу, и перейти оттуда
response.respond_to?(some_method_on_your_errors)
Не могли бы вы обойти проблему с помощью Duck Typing? Вместо проверки того, является ли объект ошибкой, проверьте, отвечает ли объект на вызов, чтобы получить информацию об ошибке. Если это так, обработайте ошибку в соответствии с этой информацией, в противном случае обработайте ответ (без ошибок).