Ocsigen/Eliom と PG'OCaml を使った Web開発サンプル (OMakefile付き)
明日の OCaml Meeting Tokyo 2009 で Eliom/Ocsigen について LTします!
これに備えて、 Eliom と PG'OCaml を使ったサンプルアプリを準備しました!
- Eliom は OCaml 用の Webプログラミングのライブラリです。 Ocsigen上で動作します。
- PG'OCaml は、 OCaml から PostgreSQL にアクセスするためのライブラリです。
- ソースコードに埋め込んだSQL文と OCamlコードの型整合性をコンパイル時に検査してくれます.
- オブジェクト指向言語における O/R マッパーのようなものですが、タプルやリストといったデータ型にマップするのでより簡潔です。
サンプルは ごく簡単なテーブルの表示・行の追加をおこなうアプリです.
ここからダウンロード
環境の準備
findlib ライブラリと,他の関連ライブラリをインストールし
$ ocamlfind list
で、pgocaml と ocsigen が出るようにしてください。
- Ocsigen のインストールはこちら
- port install caml-pgocaml で PG'OCaml をインストールしてください
- ただ caml-calendar がまともに入らないかもしれません。そのときは calendarLib.cma を自力で入れて下さい
- もちろん PostgreSQL も必要です Mac OS X でのインストールとDBの準備はこちら
テーブルの作成
$ psql84 (オプション) < data.sql
内容はこれだけです
CREATE TABLE mytable ( id SERIAL PRIMARY KEY, name TEXT NOT NULL, age INTEGER NOT NULL, address TEXT NOT NULL ); INSERT INTO mytable(name,age,address) VALUES ('keigoi', 27, 'Nagoya'), ('xxx', 30, 'Osaka'), ('yyy', 15, 'Tokyo');
コンパイル
- simpleeliomapp-0.1.tar.gz を展開する.
- 展開された ディレクトリに cd し
simpleapp.ml の 43行目
let dbh = PGOCaml.connect ~user:"keigoi" ~database:"keigoi" () in
の,DBのスキーマ名やユーザ名・パスワード(あれば)が違うはずなので該当部分を適当に書き換える.
- コンパイルする.
$ omake
これだけ!
インストール,実行
ocsigen.conf を同梱しているので、それを参考に /etc/ocsigen.conf を書き換え(simpleeliomapp.cma の絶対パスとか)、
# ocsigen
でocsigenをスタート。 http://localhost:8080/simpleeliomapp/list で開始です。