TL; DR
Как использовать файлы учетных данных production.yml.enc
и staging.yml.enc
в двух производственных и промежуточных приложениях Rails, в то время как приложение имеет только обычные среды development
, test
и production
?
Я использую Heroku и обращаюсь к нему в этом вопросе. Однако это не указано c для этого поставщика.
Подробно
Приложение часто развертывается несколько раз. Экземпляр служит производственным приложением, а другой - промежуточным приложением, которое, как ожидается, будет запущено в производство. Rails упрощает использование этого шаблона, поскольку создавать новые среды очень просто.
Однако Heroku предлагает не делать этого по уважительным причинам. Например, у кого-то может возникнуть соблазн поставить несколько if Rails.env.production?
здесь и там, проложив путь для некоторых, «но это работает в постановке !?» в пятницу вечером. Лучше иметь единую производственную среду с разными наборами параметров, чтобы фактически различать этапы (например, другое имя сегмента AWS S3, другой ключ API и т. Д. c.). Чтобы достичь этого, Heroku советует полагаться на переменные среды.
Начиная с Rails 5.2 и более поздних версий в Rails 6, учетные данные удобно обрабатывать через зашифрованные файлы Yaml в config/credentials
. Обычно именно здесь желательно хранить все эти переменные, которые меняются от одной среды к другой, вместо использования беспорядочных переменных среды. Этот механизм можно использовать в Heroku благодаря единственной переменной среды RAILS_MASTER_KEY
, которая содержит ключ, используемый для расшифровки файла учетных данных.
Но эти части не подходят. Как мы можем создать единую среду production
, тогда как файлы учетных данных предназначены для каждой среды?