Ruby on rails Rails凭据返回零

Ruby on rails Rails凭据返回零,ruby-on-rails,Ruby On Rails,我有一个Rails 6.0.0rc2应用程序,读取我的凭据时遇到问题 当我执行rails凭证:编辑时,我可以添加凭证,它们保存得很好 aws: access_key_id: 123 secret_access_key: 345 但是,当我运行控制台并尝试读取凭据时,会得到以下结果: Rails.application.credentials[:aws] => nil 或 或 无论我尝试什么,我的凭证似乎总是nil 如果我运行Rails.application.creden

我有一个Rails 6.0.0rc2应用程序,读取我的凭据时遇到问题

当我执行
rails凭证:编辑
时,我可以添加凭证,它们保存得很好

aws:
  access_key_id: 123
  secret_access_key: 345
但是,当我运行控制台并尝试读取凭据时,会得到以下结果:

Rails.application.credentials[:aws]
  => nil 

无论我尝试什么,我的凭证似乎总是
nil


如果我运行
Rails.application.credentials.secret\u key\u base
我会得到正确的结果,因此文件可以很好地读取。

您是否尝试过使用
dig

aws:
  access_key_id: 123
  secret_access_key: 345

类似的方法可能会奏效:

Rails.application.credentials.dig(:aws, :access_key_id)

我发现Rails.application.credentials.dig(:aws,:access\u key\u id)不起作用,但是,如果您删除“:aws”,并使用Rails.application.credentials.dig(:access\u key\u id),它将提取机密文件中名为“access\u key\u id:”的项的值。

我自己刚刚遇到这个问题,我访问数据的方法是制作一个助手方法,例如:

  def credentials
    Rails.application.credentials[:aws]&.with_indifferent_access
  end

然后使用
credentials[:access\u key\u id]
我能够访问内部密钥。如果我尝试从我所在的控制器中执行
Rails.application.credentials[:aws]
,它就不起作用,但是如果我使用helper方法,它就起作用了 我也遇到了同样的问题。对我来说,重启Rails服务器修复了这个问题


服务器可能不会自动接收更改,或者在创建新的credentials.yml.enc文件时需要重新启动服务器。

我遇到了类似的问题,但我不确定它是否与您的相同。如果access_密钥中包含保留字符,则无法正确解析该密钥。即使是像“!”这样的字符也会引起问题。在credentials.yml.enc文件中,将值用引号括起来。访问这些值时,请使用dump方法转义有问题的字符。因此,在您的例子中,
Rails.application.credentials[:aws][:access\u key\u id].dump
我也面临同样的问题。我用升华更新了凭证文件。 即使重新启动服务器,我也无法进行更改。
我关闭了终端,然后它开始反映变化。

同样的故事。返回
nil
如果在终端中运行
bin/rails凭据:show
,您会得到什么结果?我可以看到文件的全部内容。我的原始答案中有语法错误,您现在得到更好的结果了吗?我已经注意到语法错误并删除了“.”我很遗憾你提到了
Rails.application.credentials.secret\u key\u base
可以工作。那Rails.application.credentials[:secret\u key\u base]
呢?也许符号访问被破坏了。您使用的是哪个版本的ruby?您可能能够执行
Rails.application.credentials.aws.access\u key\u id
Rails.application.credentials[:secret\u key\u base]
工作正常
Rails.application.credentials.aws.access\u key\u id
给出了
未定义的方法
结果,如上所述。Ruby版本是:Ruby 2.5.1p57(2018-03-29修订版63029)[x86_64-darwin17]hmm也许你的文件中有一个隐藏字符,它正在破坏东西。我会在
secret\u key\u base
之后删除文件中的所有内容,并尝试手动重新键入文件的
aws
部分,而不复制它。我删除了所有内容,然后手动再次键入。还是有同样的问题这个问题还没有解决吗?如果是,请检查您是否有
config/credentials/
目录。如果您这样做了,并且它有特定于环境的凭据文件,这可能就是问题所在。我认为这是rails代码库的问题,似乎需要提供启动应用程序所需的所有信息,包括凭据。
  def credentials
    Rails.application.credentials[:aws]&.with_indifferent_access
  end