5

私はこの振る舞いに出くわし、他の誰かがそれを見たのではないかと思っていました. 回避策があるので、ショーストッパーではありません。

Cedar スタックを使用して、Heroku で新しいアプリを作成しました。複数の環境をデモンストレーションするとき、次の構成変数を追加しました。

heroku config:add RACK_ENV=staging --app appname

環境変数が設定されていることを視覚的に確認し、次のルートを単純な Sinatra の例に入れました。

get '/?' do
  ENV['RACK_ENV']
end

ラップトップでローカルにテストしたところ、期待どおりの結果が得られましたdevelopment

Heroku にプッシュして、herokuapp.com で同じルートをヒットすると、development代わりにstaging.

Procfile を介して Web サーバーを Thin から Unicorn に切り替え、変更を Heroku にプッシュしました。

ルートにたどり着くと、予想される が得られstagingます。

他の誰かがこれを見たことがありますか?Thin を実行していた別のプロジェクトでの回避策は、New Relic アプリ名から環境をキーオフすることでした。(New Relic が動作する必要があり、現在 Cedar と New Relic と Unicorn が連携しているため、Unicorn に切り替えませんでした)。

4

2 に答える 2

14

Herokuのサンプルsinatraアプリを使用して、シダースタックのsinatraとthinで同じ問題が発生しました。RACK_ENV は、開発以外に設定することを拒否します。(「heroku config」を実行すると設定した環境が表示されるため、HerokuはRACK_ENVが設定されていると考えているようですが、アプリでは常に開発中です)。

バンブー スタック上の同じアプリには問題がありませんでした。

編集:これについてherokuにチケットを送信したところ、バグを修正した非常に迅速な応答がありました:

引用: Thin を使用している場合、デフォルトの Procfile に小さなバグがあるようです。以下を含む Procfile を作成できますか?

web: bundle exec thin start -R config.ru -e $RACK_ENV -p $PORT

于 2011-10-29T00:14:31.637 に答える
4

Heroku gem を使用して、RACK_ENV と RAILS_ENV の両方をステージングに設定することもできます。そうすれば、期待どおりに動作します。Herokuに問題があるのではないかと思います。

于 2012-02-17T15:35:33.690 に答える