【发布时间】:2025-11-27 20:45:01
【问题描述】:
有人知道如何使用新的secrets.yml 在production.rb 中设置 ENV 变量吗?
我收到了key: wrong number of arguments (0 for 1) 的以下信息:
生产.rb:
# DOES NOT WORK
ENV["SOME_STUFF_KEY"] = Rails.application.secrets.some_stuff.key
ENV["SOME_STUFF_SECRET_KEY"] = Rails.application.secrets.some_stuff.secret_key
# NOTE THAT THIS WORKS:
# ENV["SOME_STUFF_KEY"] = "abcdefg";
# ENV["SOME_STUFF_SECRET_KEY"] = "123456789123456789";
secrets.yml:
production:
some_stuff:
key: abcdefg
secret_key: 123456789123456789
【问题讨论】:
-
你试过没有嵌套值吗?生产后立即尝试 key 和 secret_key,看看会发生什么。
-
另外,我认为您的设置违背了新机密文件的目的。在生产环境中,您应该从设置在索引文件之外的 ENV 变量中读取值(例如用于导出这些变量的 production.rb)。
-
rkon:没有嵌套值:
production.rb:in[]=':没有将 Fixnum 隐式转换为 String (TypeError)` -
rkon:至于您的第二条评论,我不确定我是否理解。这些值是我的 Facebook 应用 ID 和密钥,所有敏感信息,那么 secrets.yml 不是最好的地方吗?我喜欢将所有敏感信息集中在一个地方的想法。
-
对于错误,只需尝试在键上调用 to_s。
标签: ruby-on-rails ruby-on-rails-4 yaml secret-key