使用Heroku登台环境启用加密凭据(使用生产设置)

问题描述 投票:1回答:1

Herokurecommendsnot使用名为staging的自定义环境;相反,他们建议使用production环境,但使用一组不同的ENV变量。这很有意义(see this question)。

但是,我想知道如何将这种做法与Rails 6 encrypted credentials功能集成在一起。加密凭证does支持多个环境,因此我们可以将developmentproduction凭证分开;但是,使用Heroku的建议将意味着production凭据将在实际的生产服务器和实际的登台服务器之间共享。我不想要的。

我想要的是staging服务器在development环境中使用production凭据!

保持上传和更新的所有不同凭证(在生产,暂存以及我们所有的开发人员之间)很麻烦,加密文件似乎是急需的改进;我只是无法弄清楚如何分期使用非生产证书。


PS:也许一个人可以根据Heroku中设置的环境变量覆盖config.credentials.content_path per the docs,该环境变量指示使用生产凭证还是开发凭证。好奇别人在做什么或可能在做什么。

ruby-on-rails heroku credentials ruby-on-rails-6
1个回答
0
投票

覆盖确实是解决方案。这是我的设置。

由于按照Heroku的建议将RAILS_ENV设置为production,所以我使用了另一个环境变量,我将其称为PIPE_ENV,并且将其设置为管道中的位置,因此stagingedge(用于开发)等等

现在在application.rb中,我设置了content_path。

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-keyconfig/credentials/staging.key中的字符串

© www.soinside.com 2019 - 2024. All rights reserved.