2015-06-08 4 views
0

У меня есть API обертку со следующим кодом:Initializer, чтобы нагружать

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" 

Я следовал за gem readme об использовании инициализаторов, но никогда не реализовал его сам. Здесь что-то не хватает? Использование Rails 4.1.4.

ответ

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 

Я только построил несколько драгоценных камней с инициализаторами, но это работало для меня.