Ruby on Rails 5 を Heroku 無料枠で使う Procfile の書き方

Ruby on Rails 5 アプリを Heroku 無料枠で使うための Procfile の書き方をご紹介します。

Heroku

主に puma サーバー起動時に指定するオプションについて調べた内容になってます。

Rails アプリを Heroku 無料枠で使うための Procfile の書き方

Ruby on Rails アプリを Heroku の無料枠で使うための Procfile の設定は以下の公式ドキュメントに記載されています。

Procfile

web: bundle exec puma -t 5:5 -p ${PORT:-3000} -e ${RACK_ENV:-development}

puma サーバーを

  • -t 5:5
  • -p ${PORT:-3000}
  • -e ${RACK_ENV:-development}

というオプション付きで bundle exec コマンドで起動しています。

では、各オプションの内容について確認していきます。

puma -t 5:5 オプション

-t (or –threads) オプションでは、puma サーバーがリクエストの並列処理をするためのスレッド数の最小数と最大数を指定しています。

puma -h
puma <options> <rackup file>
    -t, --threads INT                min:max threads to use (default 0:16)

Heroku 公式ドキュメントでは、最小数:最大数ともに5スレッドとなっていますが、dyno 時代は web を1つだけしか起動していないので Heroku 無料枠で収まります。

puma -p ${PORT:-3000} オプション

-p (or –port) オプションでは、puma サーバーを環境変数 PORT が定義されている場合は PORT の値をポート番号として利用します。

PORT の値がなければ 3000 番ポートを指定して起動させます。

puma -h
puma <options> <rackup file>
    -p, --port PORT                  Define the TCP port to bind to

puma -e ${RACK_ENV:-development} オプション

-environment ${RACK_ENV:-development} オプションでは、puma サーバーを環境変数 RACK_ENV が定義されている場合は RACK_ENV のモードで起動します。

RACK_ENV の値がなければ development モードで起動させています。ちなみに puma のデフォルトの挙動も development モードです。

puma -h
puma <options> <rackup file>
    -e, --environment ENVIRONMENT    The environment to run the Rack app on (default development)

本記事のポイントはスレッド数は5つ起動していて Dyno は1つしか起動させてないので、Heroku 無料枠で収まるという点でした。

参考情報