2007年06月09日

ISBNでAmazon ECS検索(2)

先日のAmazon ECSを検索するサンプルクラスですが、いろいろと問題が。

まず、致命的なところでは、このクラスItemSearchとItemLookupに対応しているつもりなのに、ItemLookup時のエラー応答がハンドリングできていない。

xpath = "ItemSearchResponse/Items/Request/Errors/Error"

というXPathでエラー応答があるかどうかをチェックして、エラーの場合はコードとメッセージを取得しているのだが、ItemSearchをハードコード(死)

xpath = "#{@response_node_name}/Items/Request/Errors/Error"

こうだった。

また、このクラスはlibディレクトリの下において、Controller/Helper/Modelとは別扱いにしたのだが、そうするとloggerオブジェクトも使えなくて困った。上記のエラーコードとメッセージをlogger.warn()しておきたかった訳です。

しかしよく考えると、Controller/Helper/Moddelからloggerオブジェクトをいつでも使えると言うことは、loggerはクラスメソッド扱いか。明示的にクラス名を指定して

@error_code = element.text('Code') @error_message = element.text('Message') ApplicationController.logger.warn 'error_code: ' + @error_code ApplicationController.logger.warn 'error_message: ' + @error_message

でOKだった。

追記:

ApplicationController.logger を明示的に指定すれば確かに良いのだが、長い。なんで、

@logger = ApplicationController.logger def logger @logger end

とかやっておけば良いのでしょうか。Rubyっぽくない気もするが、よく分かりません。

投稿者 iwazawa : 2007年06月09日 22:36 | トラックバック
コメント
コメントする









名前、アドレスを登録しますか?