2013-09-12 3 views
13

Каков наилучший способ создания настраиваемого раздела конфигурации для приложения rails? в идеале я хотел бы, чтобы конечный результат был таким, как:Конфигурация пользовательских рельсов

Rails.configuration.foo.bar 
Rails.configuration.foo.baz 

e.g.

Rails.configuration.stackoverflow.api_key 
Rails.configuration.stackoverflow.api_secret 

и я бы сохранить конфигурацию StackOverflow в некоторых .rb файл (конфигурационный/инициализаторы?), И я бы, очевидно, есть и другие, которые так же в пределах пространств имён Rails.configuration

ответ

25

Что вы ищете является ActiveSupport::OrderedOptions.

Он используется рельсами внутри для установки пространства имен config. Это позволяет сделать что-то вроде этого, в config/application.rb:

module MyApp 
    class Application < Rails::Application 
    # ... 
    config.foo = ActiveSupport::OrderedOptions.new 
    config.foo.bar = :bar 
    end 
end 

Вы можете получить его обычным способом:

Rails.configuration.foo.bar 

Если вы хотите, чтобы это было от окружения, вы можете также использовать его в config/environments/*.rb а не config/application.rb.

+1

awesome, спасибо! в рельсах так много волшебства, что вы просто должны знать *: -/ – hackerhasid

+0

Не волнуйтесь, в рельсах так много методов и классов, теперь просто невозможно узнать их все :) –

1

В Rails 4 использовать custom-configuration лучше.

$ Rails.configuration.x.class 
# Rails::Application::Configuration::Custom < Object 

Rails.application.configure do  
    # custom configuration section 
    config.x.foo.bar = "foo.bar" 
end 

$ Rails.configuration.x.foo.bar 
# "boo.bar" 
Смежные вопросы