3

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

在客户端我有这个代码:

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

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

response.is_a?(Error)

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

谢谢!罗伯托

4

2 回答 2

3

虽然我不确定 DRb 如何管理远程对象,但我希望它能够修改 #kind_of? 将类层次结构保留在远程对象上,因此您可以执行以下操作:

response.kind_of?(Error)

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

response.respond_to?(some_method_on_your_errors)
于 2008-10-12T15:42:33.307 回答
1

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

于 2008-10-12T15:54:11.270 回答