Erlang プロジェクトの配布形態などを見る
Erlang で書かれたアプリケーションを配布する場合に
- ビルド方法
- ディレクトリ構成
- 起動・再起動・終了方法
などをどう提供しているのかを調べてみた。
id:Voluntas さんと id:cooldaemon さんに教えてもらった候補たち RabbitMQ, Yaws, MochiWeb, ejabberd, Kai を見ていく。
RabbitMQ
- Makefile が参考になる
- automake じゃない
- start-cover
- os_mon オプション
- OS Monitor Application
- 起動オプション
- "+K true +A30 -kernel inet_default_listen_options [{nodelay,true},{sndbuf,16384},{recbuf,4096}] -kernel inet_default_connect_options [{nodelay,true}]"
- erl_call
- 起動は scripts/rabbitmq-server などプラットフォーム毎に存在
- これは良い
- -boot オプションは何?
- systools 勉強しないと
- dialyzer
- gen_server2
- core で使っている
- テストが見当たらない。
- 追記:あった。
- rabbitmqctl(sh) と rabbitmqctl モジュール。これ良い真似しよう。
- logger は独自 gen_server がいる
- node_monitor
Yaws
MochiWeb
- 小さなプロジェクトなので見通しが良い
- ライブラリなので install などのサポートがない。
ejabberd
- automake
- ejabberdctl
- -noinput -detached
- 独自 logger
Kai
- 独自 logger
- 起動サポートなし
- 見通しやすい規模
- きれいなコード
- README の see http://kai.wiki.sourceforge.net/getting+started がリンク切れしてる
結論
RabbitMQ 最強。レベル高すぎる。