Переопределение - это действительно решение. Вот мои настройки.
Так как RAILS_ENV
установлен на production
в соответствии с рекомендацией Heroku, я использую другую переменную среды, которую я назвал PIPE_ENV
и которая установлена на позицию в конвейере, поэтому staging
, edge
(для разработки) и др. c.
Теперь в application.rb
я задаю путь_содержания.
module MyAppName
class Application < Rails::Application
…
if ENV["PIPE_ENV"].present?
Rails.application.config.credentials.content_path = Rails.root.join("config/credentials/#{ENV["PIPE_ENV"]}.yml.enc")
end
end
end
Мне не нравится, что здесь что-то есть, но config/environments/production.rb
использует учетные данные для установки почтовой программы, поэтому она должна быть установлена раньше.
Кроме того, не забудьте установить RAILS_MASTER_KEY в соответствующую среду, поэтому для постановки вы вызываете
heroku config:set RAILS_MASTER_KEY=your-staging-key -a your-staging-app
Конечно, your-staging-key
- это строка в config/credentials/staging.key