2012/09/13

Recent entries from same category

  1. Microsoft Word を Markdown に変換するコマンド「docx2md」を作った。
  2. Go で大文字小文字無視の文字列比較ベンチマーク
  3. Go で型がインタフェースを実装している事を保証するには
  4. 改訂2版 みんなのGo言語
  5. Go のポインタの躓きやすい点

Webのお仕事をやってると、Webサーバのインスタンスと同時にワーカープロセスを起動する事も結構多く、ジョブキューサーバも含めて一括で起動したくなったりします。
ruby 製の foreman という物を使うと Procfile というファイルに書かれた内容でプロセスを起動して、個別に上げたり落としたり出来る様になります。ただしwindowsでは重くて使えない(windows上のrubyどうにかしてる)し、kazeburoさんが作ってるperl製のProcletはParallel::Preforkがwindowsで動かないので困ってました。 ここまで来たら自分で書くしかないかなーとか考えながら、C言語で書くの面倒臭いと思ったのでGo言語で書きました。
mattn/goreman - GitHub

foreman clone written in go language

https://github.com/mattn/goreman
今のところ以下の様に動きます。
まず以下の様なProcfileを用意します。
web1: plackup --port 5000
web2: plackup --port 5001
このファイルのある場所で、
$ goreman start
とすると Procfileにエントリされているプロセスを起動します。
goreman1
この様に色付きで標準出力されながら起動します。
別の端末で
$ goreman run stop web1
とすると
goreman2
停止し
$ goreman run start web1
とすると
goreman3
再度web1に割り当てられたプロセスが起動します。
$ goreman run restart web1
もあります。rpcの警告が出てるのはそのうち直します。
Windows と Linux で動作します。
今のところ、foreman の様に .env ファイルを読み込んだり、.foreman ファイルに従って起動したりはしていませんが、そのうちやるかもしれません。
機能はまだまだですが、そのうち便利になってく気がします。
Posted at by | Edit


blog comments powered by Disqus