ISBNでAmazon ECS検索(2)

| コメント(0) | トラックバック(0)

先日の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っぽくない気もするが、よく分かりません。



トラックバック(0)

トラックバックURL: http://www.iwazer.com/mt/mt-tb.cgi/83

コメントする

このブログ記事について

このページは、iwazerが2007年6月 9日 22:36に書いたブログ記事です。

ひとつ前のブログ記事は「プログラミングRuby第2版」です。

次のブログ記事は「binding」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。