Rails将机密转换为凭据

时间:2018-08-22 22:09:34

标签: ruby-on-rails ruby-on-rails-5.1 ruby-on-rails-5.2

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

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

2)关于第一点,我是否应该仍然可以在5.2.1中使用secrets?我以为credentials应该代替secrets,所以令我惊讶的是我仍然可以使用secrets并且所有测试都通过了。

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

1 个答案:

答案 0 :(得分:0)

备份您的config / secrets.yml。通过新的Rails搭建临时的Vanilla 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(首选新的平面格式,在所有环境中都是可选的),并/或将您需要的其他任何内容作为机密信息粘贴并保存。删除config / secrets.yml和临时的Rails项目。访问代码中的秘密,例如通过:

Rails.application.credentials.secret_key_base

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

Rails.application.configure do
  ...
  config.require_master_key = true
  ...
end

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