1. tyabe

    Posted

    tyabe
Changes in title
+Pow + Foreman = Invoker
Changes in tags
Changes in body
Source | HTML | Preview
@@ -0,0 +1,128 @@
+
+[Invoker](https://github.com/code-mancers/invoker) は、開発環境で複数プロセスを管理するための Ruby 製のツールです。
+
+[![Introducting Invoker](http://img.youtube.com/vi/uu6NZrYvSQ8/0.jpg)](http://www.youtube.com/watch?v=uu6NZrYvSQ8)
+
+
+設定ファイルで指定した複数のプロセスを管理しつつ、
+そのプロセスがWEBアプリケーションである場合は、ローカルドメインでアクセスできます。
+
+[Foreman](https://github.com/ddollar/foreman) と [pow](http://pow.cx/) に触発されたとのことで、それらの特徴を併せ持ったツールとなっています。
+ただ、Pow の代替としては、ちょっと機能が足りなかったり手間だったりするところがあるので、
+ローカルドメインでアクセスできるようにした foreman という感じでしょうか。
+
+現時点では Python と Node、Ruby のアプリケーションに対応しているそうです。
+
+以下は[紹介ページ](https://github.com/code-mancers/invoker)に記載されている内容を簡単にまとめただけです。
+そちらには Pow から移行する場合や rvm, rbenv と一緒に使う場合の注意点などが記載されています。
+
+## 準備
+
+Ruby 1.9.3 以上が必要です。
+
+```
+$ gem install invoker
+```
+
+## 設定ファイルを作る
+
+invoker を使って管理したいプロセスを定義するための設定ファイルを作ります。
+
+```
+$ vim invoker.ini
+```
+
+```
+[padrino]
+directory = /path/to/app
+command = bundle exec padrino s -p 5000
+
+[sidekiq]
+directory = /path/to/app
+command = bundle exec sidekiq -r ./config/sidekiq.rb
+
+[solr]
+directory = /path/to/app
+command = bundle exec rake solr:start
+```
+
+設定ファイルを作ったら、次のコマンドでプロセス管理を開始できます。
+
+```
+$ invoker start invoker.ini
+```
+
+## Procfile を使う
+
+`Procfile`が既に存在しているのであれば、`ini`ファイルは不要です。
+
+```
+$ invoker start Procfile
+```
+
+## .dev でアクセスできるようにする
+
+Mac OSX のみですが、次のコマンドを実行すると、`/etc/resolver/dev` や `/Library/LaunchDaemons/com.codemancers.invoker.firewall.plist` といったファイルが作成され、Invoker で起動した http のサービスに
+xxx.dev というローカルドメインでアクセスでるようになります。
+
+```
+$ sudo invoker setup
+```
+
+上記で作成されたファイルを削除するには uninstall コマンドを使います。
+
+```
+$ sudo invoker uninstall
+```
+
+上記に加え、`ini`ファイル内でアプリケーションの待ち受けポートを `$POST`または port というキーで指定すれば準備完了です。
+
+```
+[terminal]
+directory = /path/to/ayr-terminal
+port = 3000
+command = node app
+
+[mezzainine]
+directory = /path/to/mezzainine
+command = python manage.py runserver $PORT --noreload
+
+[rails]
+directory = /path/to/rails
+command = bundle exec rails s -p $PORT
+```
+
+## 起動中のプロセスを管理する
+
+invoker 経由で起動中のプロセスを再起動したりできます。
+
+```
+# Invoker で管理されている実行中のプロセスの一覧を表示します
+$ invoker list
+
+# プロセスに SIGINT を送り遅延ジョブの停止を試みます
+$ invoker remove dj
+
+# SIGINT で停止できないプロセスに対して任意のシグナルを送信します
+$ invoker remove dj -s 9
+
+# プロセスを追加・起動します
+$ invoker add dj
+
+# コマンドラベルで指定したプロセスを再起動します
+$ invoker reload dj
+
+# コマンドラベルで指定したプロセスを任意のシグナルを使って再起動します
+$ invoker reload dj -s 9
+```
+
+Mac OSX では、terminal-notifier という gem をインストールすると、結果が通知されるようになります。
+
+
+## .dev じゃないドメインを使いたい
+
+今のところはムリそうです。
+
+## サブドメインを使いたい
+
+今のところはムリそうです。