это? и объекты dRuby - PullRequest
       25

это? и объекты dRuby

3 голосов
/ 10 октября 2008

Я работаю с dRuby и в основном вызываю удаленный метод, который возвращает мне объект.

В клиентской части у меня есть этот код:

handle_error(response) if response.is_a?(Error)

где ответом является DRbObject. (Я разработал этот код перед использованием dRuby и возвращаю объект Error, если что-то пошло не так). Проблема в том, что сейчас

response.is_a?(Error)

возвращается с «ложью», потому что объект на самом деле является DRbObject. Любая идея о том, как я могу проверить класс моего объекта приложения?

Спасибо! Roberto

Ответы [ 2 ]

3 голосов
/ 12 октября 2008

Хотя я не уверен, как DRb управляет удаленными объектами, я ожидал бы, что он изменит #kind_of? сохранить иерархию классов на удаленном объекте, чтобы вы могли сделать:

response.kind_of?(Error)

Если это не работает, вы всегда можете спросить его, реагирует ли он на определенный метод, и перейти оттуда

response.respond_to?(some_method_on_your_errors)
1 голос
/ 12 октября 2008

Не могли бы вы обойти проблему, используя Duck Typing ? Вместо проверки того, является ли объект ошибкой, проверьте, отвечает ли объект на вызов, чтобы получить информацию об ошибке. Если это так, обработайте ошибку в соответствии с этой информацией, в противном случае обработайте ответ (без ошибок).

...