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 から入れてるつもりでしたが、持ってくるものを間違ってました。
これ
を入れないといけないのに、これ
を持ってきてました。うっかり。で、
(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 で実現してる(?)のがなんかすごそう。
0 件のコメント:
コメントを投稿