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

问题描述 投票:1回答:2

我已经生成了简单的rails api应用程序,我遇到了Rails.application.secrets.secret_key_base的问题 - 它是nil。我正在我的本地机器上启动它。根据this article,一切都应该没问题。我有适当的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中 - 这两个地方的结果相同。

我错过了什么想法?

PS。在您用重复标记此问题之前 - 请注意我正在使用rails 5.2,其中凭据存储已更改。

ruby ruby-on-rails-5
2个回答
1
投票

尝试

Rails.application.credentials.secret_key_base 

secret_base_keycredentials不同当你将secret_base_key添加到凭证时,它只是作为凭证提供而不是秘密。


0
投票

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

EDITOR=vi bin/rails credentials:edit

然后用:wq保存,然后再试一次。

希望这应该解决问题:)

© www.soinside.com 2019 - 2024. All rights reserved.