测试环境中的 Rails.application.secrets 中缺少secret_key_base



我生成了简单的rails api应用程序,但我遇到了Rails.application.secrets.secret_key_base问题 - 它nil。我正在本地计算机上启动它。 根据这篇文章,一切都应该没问题。我有适当的app/config/credentials.yml.enc.当我尝试用rails credentials:edit编辑它时,它会正确编辑。它的实际内容是

# Used as the base secret for all MessageVerifiers in Rails, including the one protecting cookies.
secret_key_base: 47ba27802a354b44c1cd0d0c624fcde2dced69ccfe62d274e9ecfc98d9e6671c4cf31a29aaf77af555d9553811a3ff15f22ab060e5ec5ffc0d29f77241368272

在所有配置文件(/app/config/environments/*.rb(中,我都添加了config.require_master_key = true- 它没有帮助。 我的实际Rails.application.secrets内容是{:secret_key_base=>nil, :secret_token=>nil}。我已经把它转储到我的自定义类中并application_controller.rb- 在两个地方都有相同的结果。

知道我错过了什么吗?

附言。在你用重复标记这个问题之前 - 请注意,我使用的是 rails 5.2,其中凭据存储已更改。

尝试

Rails.application.credentials.secret_key_base 

secret_base_key不同于credentialssecret_base_key添加到凭据时,它仅可用作凭据,而不是机密。

我遇到了同样的问题,最后我发现rails credentials:edit并没有真正保存,因为编辑器(我使用的是VS代码(。当我使用 vim 尝试它时,它保存了,一切都按应有的方式工作。因此,当您运行命令时,请尝试将编辑器设置为 vim,如下所示:

EDITOR=vi bin/rails credentials:edit

然后使用:wq保存,然后重试。

希望这应该可以解决问题:)

最新更新