Rails 将机密转换为凭据

Ccy*_*yan 5 ruby-on-rails ruby-on-rails-5.1 ruby-on-rails-5.2

我将我的 Rails 应用程序从 5.1.6 更新到 5.2.1,我们secrets之前使用过。我们想切换到,credentials因为它应该替换secrets. 有几件事我想知道:

1)有没有一种“Railsy”的方式来做到这一点?我知道我可以编辑secrets并将内容复制到 ,credentials但我不确定这是否是正确的方法,因为我找不到任何关于此的内容。另外,我尝试从中复制加密的内容secrets.yml.enc并将其粘贴到,credentials.yml.enc但这不起作用,遇到了一些加密问题。

2)关于第一点,我应该还能secrets在5.2.1中使用吗?我以为credentials应该更换,secrets所以我很惊讶我仍然可以使用secrets并且我的所有测试都通过了。

感谢您提供任何信息或帮助!

Ska*_*ddy 2

备份您的 config/secrets.yml。通过 Rails new 搭建一个临时的普通 Rails 5.2.1 项目。将 config/master.key 和 config/credentials.yml.enc 从其中复制到现有的 Rails 项目。例如在 Ubuntu 中通过以下方式编辑这些凭据:

EDITOR="gedit --wait" bin/rails credentials:edit
Run Code Online (Sandbox Code Playgroud)

从旧的secrets.yml中替换secret_key_base(首选新的平面格式,对于所有环境都是可选的)和/或将您需要的任何其他内容作为秘密粘贴到其中并保存。删除 config/secrets.yml 和临时 Rails 项目。访问代码中的秘密,例如通过:

Rails.application.credentials.secret_key_base
Run Code Online (Sandbox Code Playgroud)

确保升级后的 Rails 5.1.6 项目使用 config/environments/*.rb 中的主密钥:

Rails.application.configure do
  ...
  config.require_master_key = true
  ...
end
Run Code Online (Sandbox Code Playgroud)

重新启动 Rails 服务器。不要忘记 .gitignore 和 .dockerignore config/master.key!