Я столкнулся с таким поведением и подумал, видел ли его кто-нибудь еще. У меня есть обходной путь, чтобы это не мешало.
Я создал новое приложение на Heroku со стеком Cedar. При демонстрации нескольких сред я добавил следующую конфигурационную переменную:
heroku config: add RACK_ENV = staging --app appname
Я визуально проверил, что переменная среды установлена, а затем поместила следующий маршрут в мой простой пример Sinatra:
get '/?' do
ENV['RACK_ENV']
end
Когда я тестировал локально на своем ноутбуке, я получил ожидаемую разработку
.
Когда я перешел на Heroku и пошел по тому же маршруту на herokuapp.com, я получил разработку
вместо staging
.
Я переключил веб-сервер с Thin на Unicorn через Procfile и вернул изменения обратно в Heroku.
Теперь, когда я выбрал маршрут, я получил ожидаемую постановку
.
Кто-нибудь еще это видел? Мое обходное решение в другом проекте, в котором я работал с Thin, заключалось в том, чтобы исключить среду из имени приложения New Relic. (Я не переключался на Unicorn, потому что мне нужен New Relic для работы, и в настоящее время Cedar, New Relic и Unicorn работают вместе).