Ruby 1.9からDBIでPostgreSQLに接続した.どのpostgresドライバを使うかでDBIのバージョンが決まるということと,1.9を使うのはまだ早すぎるらしい(?)ことがわかった.
Ruby1.9からDBIでPostgreSQLに接続前回は挫折したが,わかった問題点を整理するとこうなる.
1.については具体的には以下の内容だ.
今回は,パッチを作ってこいつらには何とか対応した. そして2.は,バージョンの組み合わせが重要というお話.こういうことを踏まえて何とかうまくいった方法を,書いてみる. 環境
うまくいった方法(A) postgres 0.7.9.2008.01.28 + dbi 0.1.1必要なもの:
postgresは,gemを解凍して中身にパッチを当ててインストールする gem unpack postgres-0.7.9.2008.01.28.gem cd postgres-0.7.9.2008.01.28/ext patch extconf.rb < postgres-0.7.9_extconf.rb.patch patch postgres.c < postgres-0.7.9_postgres.c.patch ruby extconf.rb make su make install tar zxf dbi-0.1.1.tar.gz cd ruby-dbi patch lib/dbi/sql.rb < dbi-0.1.1_sql.rb.patch ruby setup.rb config --with=dbi,dbd_pg ruby setup.rb setup su ruby setup.rb install (B) ruby-pg 0.7.9 + dbd-pg 0.3.7 + dbi 0.4.1ruby-pgだとdbiのバージョンが変わる.必要なもの:
ruby-pgにパッチを当ててインストールする tar zxf ruby-pg-0.7.9.2008.10.13.tar.gz cd ruby-pg/ext patch pg.c < ruby-pg-0.7.9_pg.c.patch ruby extconf.rb make su make install tar zxf dbd-pg-0.3.7.tar.gz cd dbd-pg-0.3.7 ruby setup.rb config ruby setup.rb setup su ruby setup.rb install tar zxf dbi-0.4.1.tar.gz cd dbi-0.4.1 ruby setup.rb config ruby setup.rb setup su ruby setup.rb install うまくいかなかった方法 orz(C) ruby-postgres 0.7.1.2006.04.06 + dbi 0.1.1ruby-postgresのCプログラムで,コンパイルエラーが多発.代わりにpostgresを使えば済むことなので,モチベーションが上がらず中止.(D) postgres-pr 0.5.1 + dbi-0.1.1とりあえずpostgres-prからrequire "parsedate" を削ってみたが,以下のエラーで停止/usr/local/lib/ruby/site_ruby/1.9.1/dbi.rb:344:in `rescue in load_driver': Could not load driver (no such file to load -- readbytes) (DBI::InterfaceError) from /usr/local/lib/ruby/site_ruby/1.9.1/dbi.rb:275:in `load_driver' from /usr/local/lib/ruby/site_ruby/1.9.1/dbi.rb:227:in `_get_full_driver' from /usr/local/lib/ruby/site_ruby/1.9.1/dbi.rb:213:in `connect' from ./test.rb:5:in `<main>' 今回の教訓
|