岩本隆史の日記帳(アーカイブ)

はてなダイアリーのサービス終了をうけて移行したものです。更新はしません。

Pinto公開に向けて #13 ― ActiveRecord::Extensions を断念

あらすじ

Pintoというソーシャルブックマークサービスを、Rubyで開発中です(GitHubリポジトリ)。開発中に気づいたことや工夫した点などを、備忘録も兼ねて書いています。その13回目です。

本題

ActiveRecordの拡張ライブラリであるActiveRecord::Extensionsを触ってみたのですが、うまく動かなかったため、採用を見合わせることにしました。

gemでの最新である0.7.0も、GitHub上の0.8.0も、ActiveRecord 2.1.0との組み合わせで、うまく動きません。私が試したのは、MySQLの「INSERT ... ON DUPLICATE KEY UPDATE」構文です。0.7.0は、クラスの継承に問題があり、TypeErrorが発生しました。0.8.0は、ActiveRecord::Base.importメソッドにon_duplicate_key_updateオプションを渡しても、普通のINSERT構文で発行されてしまいます。

ActiveRecord::Extensions以外に、特殊な構文に対応しているO/Rマッパが見つからないので、Ruby/DBIを使い、SQLを自分で書こうと思っています。