foreman とは
foreman は、Procfile を読み込み、複数のプロセスを管理できるツール。
Heroku を動かす際にも用いられている。
(Heroku toolbelt インストール時に自動的にインストールされる。)
または、gem でインストールする。
$ gem install foreman
使い方
$ foreman -h
Commands:
foreman check # Validate your application's Procfile
foreman export FORMAT LOCATION # Export the application to another proce...
foreman help [COMMAND] # Describe available commands or one spec...
foreman run COMMAND [ARGS...] # Run a command using your application's ...
foreman start [PROCESS] # Start the application (or a specific PR...
foreman version # Display Foreman gem version
Options:
-f, [--procfile=PROCFILE] # Default: Procfile
-d, [--root=ROOT] # Default: Procfile directory
Procfile を配置
アプリケーションで管理するプロセスを Procfile に記述し、アプリケーションルートに配置。
Procfile の書き方
<process type>: <command>
process type : web, worker, clock などが代表的で、名前はなんでもよい。
(Heroku では web は特別で、この名前が Heroku ルータからの HTTP を受け付ける。)
web: bundle exec rails server -p $PORT # rails 起動($PORTは5000がデフォ)
worker: bundle exec rake jobs:worK # バッチ起動
redis: bundle exec redis-server /usr/local/etc/redis.conf # Redis 起動
確認
Procfile の設定が有効かを確かめる
$ foreman check
起動
$ foreman start
これで、Procfile に設定したすべてのプロセスを一度に起動することができる。
終了は Ctrl + c
オプション
-f
環境ごとに Procfile を変えたいときは -f オプションでファイルを指定する。
$ foreman start -f Procfile.dev
-c
並列して実行するプロセス数を指定する。
$ foreman start -c worker=2
-p
ポートを指定して起動する(デフォルトでは $PORT は 5000から)
$ foreman start -p 3000
-d
ディレクトリを指定できるっぽいけど、ほとんど使わないと思う。
-e (.env)
.env を読み込んで起動。
環境変数とかをここ宣言しておくと便利。
APP_ID="xxxxxxxxx"
設定した環境変数は、rubyであれば
$ foreman run pry
[1] pry(main)> puts ENV["APP_ID"]
xxxxxxxxx
=> nil
で確認できる。
###.foreman
port: 3000
foreman コマンドのデフォルトオプション指定などは、.foremanファイルに記述することで、起動時に自動的に設定できる。
※これらのファイルは .gitignore に設定してコミットしないよう気をつける。
参考・引用
- Process Types and the Procfile | Heroku Dev Center : https://devcenter.heroku.com/articles/procfile#developing-locally-with -foreman
- foreman(1) - manage Procfile-based applications : http://ddollar.github.io/foreman/
- #281 Foreman - RailsCasts : http://railscasts.com/episodes/281-foreman?language=ja&view=asciicast
- foreman について - 君の瞳はまるでルビー - Ruby 関連まとめサイト : http://www.ownway.info/Ruby/index.php?foreman%2Fabout