如何使用Rails.application.credentials.dig将数据加载到storage.yml短语?

时间:2019-05-11 01:10:10

标签: ruby-on-rails-5

如果我将cloudinary凭据保留在storage.yml文件中,则我的Ruby on Rails应用程序可以正常工作。如果我尝试通过调用从机密文件中提取内容来使用相同的数据,则我的程序将失败,并要求提供api键。

下面是我的storage.yml文件中一个节的两个视图,最上面的(带有cloudinary的'i')是失败的代码。第二个节(使用实际的my_xxx数据而不是这些占位符)可以正常工作。我不知何故搞砸了certificate.dig函数,但是不明白我的错。 certificate.yml.enc文件具有第二个节的精确副本,正确的凭据位于主密钥下方。

多云:

service: Cloudinary

cloud_name: <%= Rails.application.credentials.dig(:cloudinary, :cloud_name) %>

api_key: <%= Rails.application.credentials.dig(:cloudinary, :api_key) %>
api_secret: <%= Rails.application.credentials.dig(:cloudinary, :api_secret) %>

多云:

service: Cloudinary

cloud_name: my_cloud_name

api_key: my_cloudinary_api_key

api_secret: my_api_secret

我希望能够使用certificate.yml.enc文件保存云凭证。

1 个答案:

答案 0 :(得分:-1)

发现如果我从... dig(:cloudinary,:cloud_name)中获取':cloudinary,',则dig操作会正确返回该值。因此,storage.yml文件的正确格式为:

服务:cloudinary

cloud_name:<%= Rails.application.credentials.dig(:cloud_name)%>

api_key:<%= Rails.application.credentials.dig(:api_key)%>

api_secret:<%= Rails.application.credentials.dig(:api_secret)%>