Я сталкивался с таким поведением и задавался вопросом, видел ли кто-нибудь еще это.У меня есть обходной путь, так что это не шоу-стоппер.
Я создал новое приложение на 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 работают вместе).