Webアプリケーション開発時などに依存するバックグラウンドプロセスを管理するツールとして rubyで作られた foreman というツールがあります
Procfileという名前のファイルに
worker: ./bin/worker
web: plackup web.psgi
と書いて
$ foreman start
とやると指定したプロセスを起動してくれるらしいです。
cho45やtokuhiromからの提案もあったので、Procletをベースに同様の機能を持つprocletコマンドを作り、Procletに同梱してリリースしました。
https://metacpan.org/module/Proclet
バージョン0.11で追加されました。
インストールは
$ cpanm Proclet
使い方
実装されていない機能もあるけどだいたいforemanと一緒です
Procfileを用意して proclet start します
$ cat Procfile
worker: ./bin/worker
web: plackup web.psgi
$ proclet start
止めたい時はctrl-cです
起動するとこのようにログが出力されます
サービスの起動する数を変更したい場合は -c (—concurrency) を使います
$ proclet start -c worker=2,web=1
サービスごとログに色を付けたい場合は —color オプションを追加します
$ proclet start --color
環境変数は .env というファイルから読み込みます
$ cat .env
FOO=bar
BAZ=qux
.env以外から環境変数を読み込みたい場合は -e (—env) で指定します
デフォルトの起動オプションは .foremanファイルを置く事で指定できます。起動オプション名の長い方を使い、YAML形式で保存します
$ cat .foreman
concurrency: worker=2,web=1
color: 1
これで複数のプロセスを必要とするWebアプリケーション開発も捗りますね!足りない機能のpullreqお待ちしております。