[Ruby] foreman で複数プロセスを管理する
middleman v3.4 と Browserify の環境に適用。
[markdown]
こちらを見てこういう場合に foreman を使うのかとなるほど。
> * [webpackを使った Rails上でのReact開発 – クックパッド開発者ブログ](http://techlife.cookpad.com/entry/2016/07/27/101015)
>
> このままでは、Rails開発者もわざわざJSビルド用の別プロセスを起動しておかなければならないので foreman start で railsとwebpackのプロセスを起動するようにします。
追記:2016/12/09
以下の記事ですが、middleman v3.4 のプロジェクトに導入しています。
現行の middleman v4 には [external_pipeline](https://middlemanapp.com/jp/advanced/external-pipeline/) という仕組みがあり、Webpack や Browserify
のバンドルはこれで実現できます。
誤解を招くサンプルでしたので補足します。
Twitter でご連絡頂いた皆様、ありがとうございました。
## Summary
[Middleman](https://middlemanapp.com/jp/) と Browserify(watchify)を [parallelshell](https://github.com/keithamus/parallelshell) で動かしていたが、他にも動かしているプロセスがあった。
> * [npm: run-script でタスクランナーから解放される | deadwood](https://www.d-wood.com/blog/2015/12/10_7716.html)
> * [Babel | deadwood](https://www.d-wood.com/blog/category/babel)
[foreman](https://github.com/ddollar/foreman) でキレイに管理できそうなので、parallelshell -> foreman に載せ替えるために調査。
### foreman
foreman とはなんぞや。
> * [ruby on rails – foremanとはなんでしょうか 使う利点は? – スタック・オーバーフロー](http://ja.stackoverflow.com/questions/17831/foreman%E3%81%A8%E3%81%AF%E3%81%AA%E3%82%93%E3%81%A7%E3%81%97%E3%82%87%E3%81%86%E3%81%8B-%E4%BD%BF%E3%81%86%E5%88%A9%E7%82%B9%E3%81%AF)
– 複数プロセスを管理する Ruby ツール。
– Procfile というファイルに起動するアプリケーションを一覧で記述する。
以下も参考にさせて頂きました。
> * [#281 Foreman – RailsCasts](http://railscasts.com/episodes/281-foreman)
> * [foreman について – 君の瞳はまるでルビー – Ruby 関連まとめサイト](http://www.ownway.info/Ruby/foreman/about)
> * [foreman で アプリケーションを動かす。 – Qiita](http://qiita.com/7kaji/items/6a59977d2ad85604e7fd)
## Installation
> * [ddollar/foreman: Manage Procfile-based applications](https://github.com/ddollar/foreman)
以下を用意して、
“`Gemfile
gem ‘foreman’
“`
`bundle install` しました。
“`prettyprinted
% bundle exec foreman -v
0.82.0
“`
## Usage
middleman と Browserify なので、以下のような `Procfile` を用意。
`$PORT` で foreman ディフォルトの 5000 番となる。
“`:Procfile
middleman: bundle exec middleman server -p $PORT
watchify: npm run watchify
“`
`foreman start` で開発を開始。
“`
% bundle exec foreman start
21:45:59 middleman.1 | started with pid 11824
21:45:59 watchify.1 | started with pid 11825
“`
[/markdown]