Rails 6+:Rails读取SECRET_KEY_BASE的顺序(环境变量与凭据。yml.enc)

对于上下文,我正在将Rails应用程序更新为5.2,然后更新为6.0。

我正在更新我的凭据,以在Rails 5.2+应用程序中使用默认的config/credentials.yml.encconfig/master.key

Rails docs状态:

  

在测试和开发应用程序中,获取从应用程序名称派生的secret_key_base。其他环境必须使用config/credentials.yml.enc中存在的随机密钥   (强调)

这使我认为,在生产中,需要{strong> 才能通过SECRET_KEY_BASERails.application.credentials.secret_key_base读取config/credentials.yml.enc值。在testdevelopment环境中,secret_base_key本质上是“无关的”,因为它是根据应用程序名称计算的。

但是,当我看着Rails source code时,它显示为:

def key
  read_env_key || read_key_file || handle_missing_key
end

这似乎表示读取值的顺序是:

  1. ENV["SECRET_BASE_KEY"]
  2. Rails.application.credentials.secret_base_key
  3. 引发错误

我使用Heroku进行托管,并有一个ENV["SECRET_BASE_KEY"] env变量来存储此秘密值。

问题

  1. 如果我同时设置了 ENV["SECRET_BASE_KEY"]Rails.application.credentials.secret_base_key,哪个优先?
  2. 是否会在某个时候不赞成使用ENV变量?
  3. 我有很多特定于环境的ENV变量,因为我不想在开发中使用生产账户来使用AWS S3存储桶,条带账户等。credentials.yml.enc的平面文件格式似乎假定开发人员只需要在生产中访问这些第三方API。在Rails中,是否存在可接受的格式来处理特定于环境的凭据?

我通读了DHH original PRlinked PR上的注释线程,其中说它实现了特定于环境的凭据,但是文档没有提及此实现,所以我不确定是否这是标准,还是很快就要消失了。

greentao 回答:Rails 6+:Rails读取SECRET_KEY_BASE的顺序(环境变量与凭据。yml.enc)

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3162771.html

大家都在问