我将 Rails 应用程序从 5.1.6 更新到 5.2.1,之前我们使用的是 secrets
。我们想切换到 credentials
,因为它应该替换 secrets
。有几件事我想知道:
1)有没有一种“Railsy”的方式来做到这一点?我知道我可以编辑 secrets
并将内容复制到 credentials
但我不确定这是否是正确的方法,因为我找不到任何谈论这个的东西。另外,我尝试从 secrets.yml.enc
复制加密内容并将其粘贴到 credentials.yml.enc
但这不起作用,遇到了一些加密问题。
2)与第一点相关,我是否应该仍然可以在 5.2.1 中使用 secrets
?我认为 credentials
应该替换 secrets
所以我很惊讶我仍然可以使用 secrets
并且我的所有测试都通过了。
感谢您提供任何信息或帮助!
最佳答案
备份您的 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
替换旧的 secrets.yml 中的 secret_key_base(首选新的平面格式,对于所有环境都是可选的)和/或将您需要的任何其他内容作为 secret 粘贴到其中并保存。删除 config/secrets.yml 和临时 Rails 项目。访问代码中的 secret ,例如通过:
Rails.application.credentials.secret_key_base
确保升级后的 Rails 5.1.6 项目使用 config/environments/*.rb 中的主 key :
Rails.application.configure do
...
config.require_master_key = true
...
end
重新启动 Rails 服务器。不要忘记 .gitignore 和 .dockerignore config/master.key!
关于ruby-on-rails - Rails 将 secret 转换为凭据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51975838/