2011/02/11

cygwin に gauche-dbd-pg

gauche-dbd-pg は、先日 serversman(CentOS)にも入れました。
Emacs から tramp でサーバ側の shell を立ち上げるとローカルの Emacs からサーバ側の gosh REPL にコードを送ることができるので、サーバの PostgreSQL を操作するプログラムをローカルで開発できます。

できますが、例えば何かモジュールを作ってそれを利用するようなコードを書いた時にそのモジュールをサーバにアップロードしてからでないとテストができません。アップロードといっても、tramp を用いてローカルの Emacs の dired から直接コピーできるのですが、その一手間が面倒です。それに gosh の再起動もしくは reload 等も必要になります。一手間どころか、そもそもモジュールに変更があるたびに手作業が発生するなんて狂気の沙汰。
開発のサイクルのなかで、モジュールを再ロードしなければならないことは 頻繁におこります。このモジュールはそれを支援するものです。

ということで、ローカルの cygwin にも gauche-dbd-pg を入れて、ネットワーク越しにサーバの PostgreSQL に接続できるようにすることにしました。

当然ですが PostgreSQL の方も設定が必要。

で、cygwin の setup から postgresql を入れて、gauche-dbd-pg をダウンロードして展開して ./configure で make ・・・ でコケました。
dbd_pglib.c:817: error: too few arguments to function `Scm_Apply'
GAUCHE_API_PRE_0_9 のことを教えてもらって、試しましたがうまくいきませんでした。
で、もう一度エラーメッセージをよく見ていたら、以前 serversman に入れた時も見たことがあるような気がしてきました。確か、kahua のページにある gauche-dbd-pg-0.2.1 を入れようとした時に見た気がします。
0.2.1 が同様のエラーでうまく入らなかったから trunk から持ってきて入れたんでした。で、今回もその trunk から入れてるつもりでしたが、持ってくるものを間違ってました。

これ
を入れないといけないのに、これ
を持ってきてました。うっかり。で、後者前者の trunk は何の問題もなく入りました。
(use dbi)
(use dbd.pg)

(dbi-open?
 (dbi-connect "dbi:pg:dbname=test;port=5432;host=example.com"
              :username "postgres" :password "hoge"))
;; -> #t
ところで、dbi 周りには transaction 系の api がなさげ?with-transaction 的なものが欲しいです。取りあえず自前で用意することになりそうですかね。

で、ネットに落ちてる gauche-dbd-* を用いたコードを眺めていましたが、あまりたくさんはなさそうですね。。
Ruby の ActiveRecord みたいのを mop で実現してる(?)のがなんかすごそう。

プログラミングGauche

0 件のコメント:

コメントを投稿