ruby-on-rails - Rails 将 secret 转换为凭据

标签 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)与第一点相关,我是否应该仍然可以在 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/

相关文章:

ruby-on-rails - Sidekiq 在启动时生成错误 : Error fetching message: Invalid argument - connect(2)

ruby-on-rails - 我如何在没有控制台的情况下关闭Rails服务器?

ruby-on-rails - 尝试将 root 设置为 devise/sessions#new 会导致路由映射错误

ruby-on-rails - Ruby on Rails 中的路由冲突

ruby-on-rails - 更新 Rails 中的 params 哈希值

ruby-on-rails - 使用委托(delegate)类型处理委托(delegate)者的验证错误

ruby-on-rails - 带有 Rails 5.1 form_with 的嵌套资源

sprockets - Assets application.css 未声明,但在 list 中声明

ruby-on-rails - 如何编辑旧的 Rails 迁移以添加引用?

ruby-on-rails - 未使用 webpacker 编译的事件管理 Assets