トップ «前の日記(2012/03/23 (金) ) 最新 次の日記(2012/03/25 (日) )» 編集 RSS feed

HsbtDiary


2012/03/24 (土) [長年日記]

[ruby][sequel] Sequel の使い方

tDiary on heroku は heroku postgres に保存したデータを取り出すのに Sequel を使ってるんだけど、Sequel は ORM としてちゃんと対応してないようなデータをえいやーと取り出したり保存したり時に便利。公式サイトのドキュメントが充実しているので、そこを見ればだいたいの事は書いてあるけど、さくっと使うなら下のような感じ。

db = Sequel.connect('postgres://hsbt:''@localhost/tdiary_development')
db['diaries'].insert(:date => '20110204', :body => 'bob')
db['diaries'].filter(:date => '20110204').update(:body => 'alice')

tDiary は Rack の上で動くと行っても DB 接続のような設定に関する項目を Rack レベルで永続化する仕組みを持ってないので、下のように block で呼び出してその都度接続したり切断したりするようにした。

Sequel.connect(...) do |db|
  db.transaction do
    db['diaries'].insert(:date => '20110204', :body => 'bob')
  end
end

ドキュメントを読むと ORM として使ったり、migration の仕組みも持っていたりするみたいなんだけど、そこまでやるなら ActiveRecord でいいかなーとも思う。