amazon-ecs 周りの修正

amazon-ecs を利用したスクリプトが動かなくなっていたのでざっと修正.crown | RubyGems.org | your community gem host にも amazon-ecs に依存していた部分があっておかしくなっていたので,該当部分を修正しました.

Amazon 自体の変更

1点目は,全ての API へのリクエストにおいて,AssociateTag が必須パラメータとなったようです(こちらは,今までも指定していたので特に問題にはなりませんでしたが).2点目は,検索結果用の XML の名前が変更されたようで,具体的には,全て小文字で表記されていたのが大文字・小文字混合となったようです(例:author→Author,url→URL,...).何故,いまさら・・・

amazon-ecs の変更

amazon-ecs の方も変更があって,アクセスキーとシークレットキーの定数名がそれぞれ変更されたようです(最初の一文字が大文字に).

     Amazon::Ecs.options = {
       :associate_tag => '[your associate tag]',
-      :aWS_access_key_id => '[your developer token]',       
-      :aWS_secret_key => '[your secret access key]'
+      :AWS_access_key_id => '[your developer token]',       
+      :AWS_secret_key => '[your secret access key]'
     }
 
     # alternatively,
     Amazon::Ecs.configure do |options|
       options[:associate_tag] = '[your associate tag]'
-      options[:aWS_access_key_id] = '[your access key]'
-      options[:aWS_secret_key] = '[you secret key]'
+      options[:AWS_access_key_id] = '[your access key]'
+      options[:AWS_secret_key] = '[you secret key]'
     end
https://github.com/jugend/amazon-ecs/commit/c44cbcd7920a015f71285b6c517d6d6a4a4b91e3

もう一つは amazon-ecs の変更点ではないのですが,既存のままだと取得した XML を操作する際に文字化け?するようです.こっちは,amazon/ecs.rb を直接修正する事で回避する模様.

  1. githubからamazon/ecsのソース(ecs.rb)をダウンロードし、保存
  2. ecs.rbの141行目を書き換え
    @doc = Nokogiri::XML(xml)
     ↓
    @doc = Nokogiri::XML(xml, nul, 'UTF-8')
  3. オリジナルのスクリプトに記載しているrequire文もそれに合わせ修正
 Macなこと: amazon/ecs rubyでISBNを検索する(改訂版)