Ruby on Rails 5 アプリを Heroku 無料枠で使うための Procfile の書き方をご紹介します。
主に puma サーバー起動時に指定するオプションについて調べた内容になってます。
Ruby on Rails アプリを Heroku の無料枠で使うための Procfile の設定は以下の公式ドキュメントに記載されています。
Procfile
web: bundle exec puma -t 5:5 -p ${PORT:-3000} -e ${RACK_ENV:-development}
puma サーバーを
というオプション付きで bundle exec コマンドで起動しています。
では、各オプションの内容について確認していきます。
-t (or —threads) オプションでは、puma サーバーがリクエストの並列処理をするためのスレッド数の最小数と最大数を指定しています。
puma -h
puma
-t, --threads INT min:max threads to use (default 0:16)
Heroku 公式ドキュメントでは、最小数:最大数ともに5スレッドとなっていますが、dyno 時代は web を1つだけしか起動していないので Heroku 無料枠で収まります。
-p (or —port) オプションでは、puma サーバーを環境変数 PORT が定義されている場合は PORT の値をポート番号として利用します。
PORT の値がなければ 3000 番ポートを指定して起動させます。
puma -h
puma
-p, --port PORT Define the TCP port to bind to
-environment ${RACK_ENV:-development} オプションでは、puma サーバーを環境変数 RACK_ENV が定義されている場合は RACK_ENV のモードで起動します。
RACK_ENV の値がなければ development モードで起動させています。ちなみに puma のデフォルトの挙動も development モードです。
puma -h
puma
-e, --environment ENVIRONMENT The environment to run the Rack app on (default development)
本記事のポイントはスレッド数は5つ起動していて Dyno は1つしか起動させてないので、Heroku 無料枠で収まるという点でした。