yamotonalds's blog

Webアプリケーション開発における技術メモが中心です。たまにWebサービス、興味を持ったデバイス、自作PCに関する話題もあるかも。Amazon好きなのでAmazon.co.jpアソシエイト使ってます。

foremanでターミナルウィンドウを減らす

railsでWebアプリを作っていると実行させっぱなしにしておく必要があるコマンドがいくつかある。
例えば以下のようなもの。

作りがマズい(粗い)とポートを変えてWebサーバを複数立ち上げたりすることもある。
今まではその数だけターミナルを開いてそれぞれ実行していたが、パラメータを含めてコマンドを毎回打つのは面倒だし、ターミナルの切り替えも面倒だった。

foremanがそれを解決してくれた。

前提

  • rails serverが実行可能
  • bundle exec guardが実行可能
  • foremanがインストールされている

Procfileの作成

アプリのrootディレクトリに以下の内容のProcfileを作成する。

web: rails server
guard: bundle exec guard -i

foremanを実行

foremanを実行する。

bundle exec foreman start

2つのプロセスが実行状態になり、出力が色分けして表示される。

foremanを停止

foremanを実行中のターミナルでctrl-cを押すと実行していたすべてのプロセス停止する。

Herokuを使用する場合

Herokuもforemanを使用しているためProcfileを含めたソースをアップロードするとHerokuのforemanがそれを使用してしまう。

その場合はProcfileをProcfile.dev等にリネームし、

bundle exec foreman start -f Procfile.dev

のように開発環境ではファイルを指定すれば良い。

感想

まだ使い始めたばかりだけれど便利そう。