[Ruby] foreman で複数プロセスを管理する

middleman v3.4 と Browserify の環境に適用。

こちらを見てこういう場合に foreman を使うのかとなるほど。

このままでは、Rails開発者もわざわざJSビルド用の別プロセスを起動しておかなければならないので foreman start で railsとwebpackのプロセスを起動するようにします。

追記:2016/12/09

以下の記事ですが、middleman v3.4 のプロジェクトに導入しています。
現行の middleman v4 には external_pipeline という仕組みがあり、Webpack や Browserify
のバンドルはこれで実現できます。
誤解を招くサンプルでしたので補足します。
Twitter でご連絡頂いた皆様、ありがとうございました。

Contents

Summary

Middleman と Browserify(watchify)を parallelshell で動かしていたが、他にも動かしているプロセスがあった。

foreman

foreman とはなんぞや。

  • 複数プロセスを管理する Ruby ツール。
  • Procfile というファイルに起動するアプリケーションを一覧で記述する。

以下も参考にさせて頂きました。

Installation

以下を用意して、

gem 'foreman'

bundle install しました。

% 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