is_a?和dRuby对象

时间:2008-10-10 10:08:09

标签: ruby drb druby

我正在使用dRuby,基本上我正在调用一个返回一个对象的远程方法。

在客户端我有这段代码:

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

其中response是DRbObject。 (我在使用dRuby之前开发了这段代码,如果出现问题我将返回一个Error对象)。问题是现在

response.is_a?(Error)

返回“false”,因为该对象实际上是一个DRbObject。 关于如何检查我的应用程序对象的类的任何想法?

谢谢! 罗伯特

2 个答案:

答案 0 :(得分:3)

虽然我不确定DRb如何管理远程对象,但我希望它能修改#kind_of?保持远程对象的类层次结构,所以你可以这样做:

response.kind_of?(Error)

如果这不起作用,您可以随时询问它是否响应特定方法并从那里开始

response.respond_to?(some_method_on_your_errors)

答案 1 :(得分:1)

您是否可以使用Duck Typing来解决此问题?而不是检查对象是否是错误,检查对象是否响应调用以获取错误信息。如果是,则根据该信息处理错误,否则处理(非错误)响应。