Herokuを使用してホストする予定の自家製Sinatraアプリケーションがあります。
私は開発でフォアマンとショットガンを使用し、次の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
オプションを使用して、開発で使用する別のオプションを選択できます。
開発中(WebプロセスProcfile.dev
を含む):shotgun
foreman start -f Procfile.dev
生産でforeman start
は、通常をピックアップしますProcfile
。
または、スクリプトを使用してアプリにディレクトリを作成し、それbin
に応じて適切なWebサーバーを起動することもできます( Foremanの作成者によるコメントで$RACK_ENV
見つけたアイデアなので、検討する価値があります)。
選択した回答に対する@sharagozのコメントは、私の意見では、引数を追加せずに引き続き使用foreman start
でき、Heroku用にProcfileを分離しておくための最良のオプションです。
-f Procfile.devパラメーターを回避するために、その
procfile: Procfile.dev
中に.foremanファイルを作成できます– Sharagoz
私のアプリケーションのルートディレクトリに.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'
サーバー環境と開発環境で異なる開始コマンドをエクスポートします。
まだこれを探している人のために、ドキュメント foreman
によると、もう必要ありません。あなたは単に使うことができます:
heroku local -f Procfile.dev