Ruby 1.9 でも Sequel 経由で PostgreSQL にアクセスする方法

Ruby 1.9 でも Sequel 経由で PostgreSQL にアクセスする方法がありましたので、確認しました。技術メモです。
これまで、Sequel で PostgreSQL にアクセスするには、postgres か ruby-postgres の gem が必要だと思っていました。しかし、

postgres

Requires: pg (or postgres if pg is not available)

The Sequel postgres adapter works with the pg, postgres, and postgres-pr ruby libraries. The pg library is the best supported, as it supports real bound variables and prepared statements.

http://sequel.rubyforge.org/rdoc/files/doc/opening_databases_rdoc.html

とあるとおり、postgres ではなくて pg の gem を試してみる価値があると思いましたので、試してみました。

Mac OS X における作業

まず、ruby 1.8 でインストールされていた sequel を使って、次のようにして導入されている PostgreSQL のバージョンを確認しました。ここで、seq は ~/.bash_profile で alias seq='sequel postgres://fitter:happier@localhost/more_productive' としているものです。(localhost にユーザ名 fitter パスワード happier でデータベース more_productive を設定してあります。つまり、コマンド seq でデフォルトデータベースに sequel でアクセスできるようにしてあります。)

$ seq
Your database is stored in DB...
irb(main):001:0> DB.select(:version.sql_function).first
=> {:version=>"PostgreSQL 8.4.1 on i386-apple-darwin10.2.0, compiled by GCC i686-apple-darwin10-gcc-4.2.1 (GCC) 4.2.1 (Apple Inc. build 5646) (dot 1), 64-bit"}
irb(main):002:0> quit

ここで、PostgreSQL の組み込み関数 version() を使用しています。SQL では SELECT version(); と書くところ、Sequel を使って DB.select(:version.sql_function).first としています。psql よりも irb が優れたシェルであると考えているためです。

自分の PostgreSQL のバージョンが 8.4 であることが分かりましたので、
http://wiki.rubyonrails.org/ja/database-support/postgres#mac_os_x_leopard%E3%81%AB%E3%81%8A%E3%81%91%E3%82%8B%E3%82%BD%E3%83%BC%E3%82%B9%E3%81%8B%E3%82%89%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB を参考にさせていただき、次のようにして Mac OS X (Snow Leopard) に rubygem pg をインストールし、Ruby 1.9 での sequel の動作を確認しました。

$ PATH=/opt/local/lib/postgresql84/bin:$PATH
$ sudo env ARCHFLAG="-arch i386" gem1.9 install pg
Building native extensions.  This could take a while...
Successfully installed pg-0.9.0
1 gem installed
Installing ri documentation for pg-0.9.0...
Updating class cache with 1421 classes...
Installing RDoc documentation for pg-0.9.0...
$ sudo gem1.9 install sequel
Successfully installed sequel-3.11.0
1 gem installed
Installing ri documentation for sequel-3.11.0...
Updating class cache with 1531 classes...
Installing RDoc documentation for sequel-3.11.0...
$ # ここで新しい端末に切り替え
$ pro:~ hfu$ seq
Your database is stored in DB...
irb(main):001:0> RUBY_VERSION
=> "1.9.1"
irb(main):002:0> DB[:hatena_rdedg].first[:the_geom]
=> "0105000020E610000001000000010200000013000000DF50EEFA798D614082ABA91D1FD342408262F92D798D6140472C48841DD3424017A02B19798D614044B2B2431DD342401BC56521798D6140332D6D151DD34240EB76A296798D6140E951C3471CD34240CDA2C1B77A8D6140285F0DA61AD34240E5CD355A7B8D61400516FDF719D342408BE986C97B8D6140F68AF5AD19D342400F37F11F7C8D61404F97207E19D3424036E4DC7C7C8D614046FF457C19D34240862ACADF7C8D614070D6CE9A19D34240BB9532647D8D6140F93C7C221AD34240A8BBD6D17D8D6140E3A353C41AD34240B336955E7E8D6140AAF0D9CD1BD34240CD0C18AD7E8D6140C21B4E701CD34240566A35A57E8D6140BFCE7BD31CD342405F6F14B97D8D6140C9E590EB1ED34240458FB25A7D8D614061326CCC1FD34240221F24A67C8D61408969C0CF21D34240"
irb(main):003:0> quit
$

これで、Mac OS X Snow LeopardRuby 1.9 でも、Sequel 経由で PostGIS つきの PostgreSQL にアクセスできることを確認できました。