私は、Herokuを使用してホストするための自家製のシナトラアプリケーションを持っています。
開発ではフォアマンとショットガンを使用し、次のProcfileを使用します。
web: shotgun config.ru -s thin -o 0.0.0.0 -p $PORT -E $RACK_ENV
開発と本番の両方でうまく機能します。しかし、問題は、プロダクションでショットガンを使用したくない遅すぎるためです。
2つのProcfiles
(たとえばProcfile
とProcfile.dev
)を使用し、 foreman
s -f
オプション を使用して別のdevで使用するもの:
Dev(Procfile.dev
にはshotgun
Webプロセスが含まれます):
foreman start -f Procfile.dev
本番環境では、foreman start
は通常のProcfile
を取得します。
または、$RACK_ENV
に応じて適切なWebサーバーを起動するスクリプトを使用して、アプリにbin
ディレクトリを作成できます(私が Foremanの作成者によるコメント)で見つけたアイデア 、検討する価値があります)。
私の意見では、選択した回答に対する@sharagozのコメントは、追加の引数を追加せずにforeman start
を使用し、HerokuのProcfileを分離したままにする最良のオプションです。
-f Procfile.devパラメーターを回避するには、
procfile: Procfile.dev
を含む.foremanファイルを作成できます– Sharagoz
アプリケーションのルートディレクトリに.foreman
ファイルを作成し、コメントのとおり
。foreman
procfile: Procfile.dev
Procfile
web: bundle exec puma -C config/puma.rb
Procfile.dev
web: bundle exec puma -C config/puma.rb
webpacker: ./bin/webpack-dev-server
1つのProcfileと環境変数でそれを処理する方法を次に示します。これをHerokuで使用しています。
環境を設定します。
export WEB_START_COMMAND='node index.js'
export WORKER_START_COMMAND='node worker.js'
Procfile:
web: eval '$WEB_START_COMMAND'
worker: eval '$WORKER_START_COMMAND'
サーバーおよび開発環境で異なる開始コマンドをエクスポートします。
まだこれを探している人のために、 docsforeman
によるともう必要ありません。単に使用できます:
heroku local -f Procfile.dev