Heroku RACK_ENV говорит «разработка» на тонком, но «постановка» на единорога - PullRequest
5 голосов
/ 08 августа 2011

Я сталкивался с таким поведением и задавался вопросом, видел ли кто-нибудь еще это.У меня есть обходной путь, так что это не шоу-стоппер.

Я создал новое приложение на Heroku со стеком Cedar.При демонстрации нескольких сред я добавил следующую конфигурационную переменную:

heroku config:add RACK_ENV=staging --app appname

Я визуально проверил, что была задана переменная среды, а затем поместил следующий маршрут в мой простой пример Sinatra:

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

Когда я проводил локальные испытания на своем ноутбуке, я получил ожидаемое development.

Когда я нажал на Heroku и отправился по тому же маршруту на herokuapp.com, я получил development вместо staging.

Я переключил веб-сервер с Thin на Unicorn через Procfile и перенес изменения обратно в Heroku.

Теперь, когда я вхожу в маршрут, я получаю ожидаемое staging.

Кто-нибудь еще видел это?Мой обходной путь в другом проекте, где я запускал Thin, заключался в том, чтобы отключить среду от имени приложения New Relic.(Я не переключился на Unicorn, потому что мне нужна New Relic для работы, и в настоящее время Cedar и New Relic и Unicorn работают вместе).

Ответы [ 2 ]

14 голосов
/ 29 октября 2011

У меня была та же проблема с sinatra и thin в стеке кедра, используя приложение sinatra на примере heroku. RACK_ENV отказывается устанавливать что-либо кроме разработки. (Похоже, Heroku считает, что установлен RACK_ENV, поскольку запуск 'heroku config' отображает заданную вами среду, однако в приложении она всегда находится в разработке).

У того же приложения в бамбуковом стеке проблем не было.

РЕДАКТИРОВАТЬ: я отправил билет в heroku по этому поводу и получил очень быстрый ответ, который исправил ошибку для меня:

QUOTE: Похоже, есть небольшая ошибка в нашем Procfile по умолчанию, если вы используете thin. Можете ли вы создать Procfile со следующим в нем?

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

4 голосов
/ 17 февраля 2012

Вы также можете настроить как RACK_ENV, так и RAILS_ENV на постановку, используя драгоценный камень Heroku ... тогда он будет работать, как и ожидалось. Я думаю, что это может быть проблема с Heroku.

...