首页 > 解决方案 > 从 Rails 5.1.6.2 升级到 6.0.0 时,如何使加密的凭据正常工作?

问题描述

我刚刚完成了通过 5.2 将我们的 Rails 应用程序从 5.1.6.2 升级到 6.0.0 的步骤,(我选择在 6.0.0 之前不担心凭据问题,以防它最终意味着我必须弄清楚新凭据两次)。

我一直在查看一些关于如何在升级时使用新凭据的指南,但他们都觉得他们错过了最后一步,或者我误解了一些东西。根本不进行凭据升级似乎在我的本地开发环境中没有引起任何问题,但是在尝试部署到我们的生产环境(Convox/AWS)时,我收到以下错误:

Missing encryption key to decrypt file with. Ask your team for your master key and write it to /app/config/master.key or put it in the ENV['RAILS_MASTER_KEY'].

令人困惑的是(对我来说),这已经是一个带有密钥集的该名称的 ENV var,并且在单步执行指南之前或之后对其进行的任何本地更改都会引发ActiveSupport::MessageEncryptor::InvalidMessage (ActiveSupport::MessageEncryptor::InvalidMessage)错误。

逐步浏览指南,我使用的是 Sublime,所以最初我运行EDITOR="subl --wait" rails credentials:edit,然后将密钥基值粘贴到当前值config/master.key- 导致上述错误。这让我不确定我应该如何处理 secret_key_base 密钥。我已经尝试将它放在 prod env var RAILS_MASTER_KEY 中,但是在部署时仍然出现错误Missing encryption key to decrypt file with. Ask your team for your master key and write it to /app/config/master.key or put it in the ENV['RAILS_MASTER_KEY'].,我尝试删除 secrets.yml 文件以防覆盖某些内容,但这不会改变部署消息。

那么我还应该做什么呢?

标签: securitycredentialsruby-on-rails-6ruby-on-rails-5.2convox

解决方案


我会master.key在您的config文件夹中创建一个文件并将您的密钥添加到其中。(您用于设置RAILS_MASTER_KEYenv var 的值。但是,请确保将其从 VCS 中排除(只需将其添加到您.gitignore的完全加密的凭据文件....但这是另一回事。


推荐阅读