初始化程序似乎没有加载

时间:2015-06-08 20:53:56

标签: ruby-on-rails ruby initializer

我有一个带有以下代码的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。

1 个答案:

答案 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

我只使用初始化程序构建了一些宝石,但这对我有用。