RightAws::ActiveSdbのバグ回避のメモ(right_aws-1.10.0 gem)
Amazon SimpleDBに取り組もうと思い、いろいろ調査しています。Javaからはtypicaを使うと良いようですが、結構ローレベルなAPIになってます。(別にこれで用は足りるのですが・・)
Rubyからもアクセスしたいので調査したのですが、現在のシステムでAmazon S3にアクセスする時に利用しているRightAwsが良さげという事で試してみました。
まずはgemのインストール。
gem install right_aws
uuidtoolsも必要との事で、これも入れる。
gem install uuidtools
RDocにあるサンプルソース*1をそのまま実行してみると、エラーになりました。
/Library/Ruby/Gems/1.8/gems/right_aws-1.10.0/lib/sdb/active_sdb.rb:367:in `generate_id': undefined method `timestamp_create' for UUID:Class (NoMethodError)
依存しているuuidtoolsのUUIDクラスにtimestamp_createメソッドはない!と怒られてしまいました。
どうも、バージョン1.10.0のバグのようです。こちらに報告が上がっていました。
To fix this problem, you'll need to edit line 376 of active_sdb.rb and add the module (UUIDTools).
- UUID.timestamp_create().to_s
- UUIDTools::UUID.timestamp_create().to_s
との事なので、先ほどのサンプルソースに一部手を加えると動くようになりました。
class Client < RightAws::ActiveSdb::Base def self.generate_id # :nodoc: UUIDTools::UUID.timestamp_create().to_s end end
ちなみにこのRightAws::ActiveSdbは、ActiveRecordっぽいAPIになってます。激しく便利!ActiveRecordのidはシリアルですけど、ActiveSdbのidはUUIDになります。