3

私は dRuby を使用しています。基本的には、オブジェクトを返すリモート メソッドを呼び出しています。

クライアント側には、次のコードがあります。

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

ここで、response は DRbObject です。(私は dRuby を使用する前にこのコードを開発しました。何か問題が発生した場合は Error オブジェクトを返します)。問題は今

response.is_a?(Error)

オブジェクトは実際には DRbObject であるため、"false" が返されます。アプリケーションオブジェクトのクラスを確認する方法について何か考えはありますか?

ありがとう!ロベルト

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

ダックタイピングを使用して問題を回避できませんでしたか?オブジェクトがエラーであるかどうかを確認する代わりに、オブジェクトが呼び出しに応答してエラー情報を取得するかどうかを確認します。含まれている場合は、その情報に従ってエラーを処理します。そうでない場合は、(エラーではない)応答を処理します。

于 2008-10-12T15:54:11.270 に答える