今日から始めるMochiweb 第2回デモアプリから学ぶ。
前回作成したMochidemoデモアプリケーションを覗いてみる事にする。ひとまずこれくらいのレベルからみてこっと。
プロジェクト構成は以下のようになっている。
docはedocドキュメント、ebinはerlangのバイナリ実体、privはどうやら静的ファイルの置き場かな。
srcはもちのろんソースコード、supportはmakeのための設定ぽい。
こんな感じ。
pugya:mochiweb shot$ tree mochidemo/
mochidemo/
-- Makefile -- deps `-- mochiweb-src -> /Users/shot/dev/erlang/product/mochiweb/scripts/../ebin/.. -- doc -- mochidemo.html -- mochidemo_app.html -- mochidemo_deps.html -- mochidemo_sup.html `-- mochidemo_web.html -- ebin -- mochidemo.app -- mochidemo.beam -- mochidemo_app.beam -- mochidemo_deps.beam -- mochidemo_sup.beam `-- mochidemo_web.beam -- include -- priv `-- www `-- index.html(*1) -- src -- Makefile -- mochidemo.app -- mochidemo.erl -- mochidemo.hrl -- mochidemo_app.erl -- mochidemo_deps.erl -- mochidemo_sup.erl `-- mochidemo_web.erl -- start-dev.sh -- start.sh `-- support
`-- include.mk9 directories, 24 files
まず表示されていたhtmlはpriv/www/index.htmlぽい。
どこかでルート指定が/priv/wwwにされているはずなので、まずはそこから抑えてみます。
コードの作りはおいおい。
pugya:src shot$ grep "priv" *.erl
mochidemo_sup.erl: {docroot, mochidemo_deps:local_path(["priv", "www"])}],
ふむ。mochidemo_sup.erlでルート指定しているぽ。
コードを見てみると(命名の標準的な規約からも)、supervisorだということがわかる。
以下のように、IP、port、ドキュメントルートを指定して、supervisorのWorkerの設定として渡している。
ちなみに監視ツリー形態はone_for_oneで、子プロセスも多分gen_serverだから、下記のコードでいうところのWebアトムもその設定になっているのかな。で、そのWebアトムの中でもWebConfig部分が実際の渡される設定部分ということなんだろう。
41 %% @spec init() -> SupervisorTree
42 %% @doc supervisor callback.
43 init() ->
44 Ip = case os:getenv("MOCHIWEB_IP") of false -> "0.0.0.0"; Any -> Any end,
45 WebConfig = [
46 {ip, Ip},
47 {port, 8000},
48 {docroot, mochidemo_deps:local_path(["priv", "www"])}],
49 Web = {mochidemo_web,
50 {mochidemo_web, start, [WebConfig]},
51 permanent, 5000, worker, dynamic},
52
53 Processes = [Web],
54 {ok, {{one_for_one, 10, 10}, Processes}}.
まあ当たり前だけども、ポートとか変えてコンパイルとmakeしなおしてみる。当然動く。
このへんはMochiwebのプロジェクト生成のテンプレートにベタに書いてあるみたいね。
短いけど今日はこれくらいにする。
次回は実際にサンプルコードを見てきまーす。
T2 0.6コードは概ねフィックス
テストとサンプルも追加したので、T2 0.6のコードは概ねフィックスです。
AMF実装部分、Flex->Java、Java->Flexの変換部分もあとから差し込めるようにしました。
あと、例外とログをわかりやすくしました。これはT2全体で有効です。
あるアクションメソッド実行時にどのURLに対してどのメソッドが呼ばれたのかの因果関係をきっちりログるようにしました。
というわけでSNAPSHOTデプローイ.
- http://maven.t2framework.org/maven2-snapshot/org/t2framework/web/t2/0.6.0-SNAPSHOT/t2-0.6.0-20090706.142932-18.jar
- http://maven.t2framework.org/maven2-snapshot/org/t2framework/web/t2/0.6.0-SNAPSHOT/t2-0.6.0-20090706.142932-18-sources.jar
あとはJavaDocとドキュメント書きます。7末くらいにはリリースできる予定です。