我有一个带有以下代码的API包装器:
module MyApi
mattr_accessor :app_id
end
我试图在这样的初始值设定项中设置app_id
的值:
# config/initializers/my_api.rb
MyApi.app_id = Rails.application.secrets.my_api["app_id"]
在我的秘密文件中,我有:
# secrets.yml
development:
my_api:
app_id: foo
但是当我打开我的控制台或运行测试时,我得到了这个:
master ✗ $ rails c
Loading development environment (Rails 4.1.4)
2.2.0 :001 > MyApi.app_id
=> nil
2.2.0 :002 > MyApi.app_id = Rails.application.secrets.my_api["app_id"]
=> "foo"
2.2.0 :003 > MyApi.app_id
=> "foo"
我已经关注使用初始化程序的宝石自述文件,但我自己从未实现过。我有什么东西在这里失踪吗?使用Rails 4.1.4。
答案 0 :(得分:0)
尝试在模块中添加:
module MyApi
### Your code here
private
def self.setup
yield self
end
end
在初始化程序中将其更改为具有设置块:
MyApi.setup do |config|
config.app_id = Rails.application.secrets.my_api["app_id"]
end
我只使用初始化程序构建了一些宝石,但这对我有用。