2

У меня есть инициализатор с именем _settings.rb, который выглядит, как этоRails: Есть инициализатор нагрузку перед application.rb

class Settings < Settingslogic 
    source "#{Rails.root}/config/application.yml" 

    namespace Rails.env 
end 

Мой application.yml определяет значение для пользовательской настройки я называю environhost. Я называю это с помощью:

Settings.environhost 

Это работает отлично, за исключением того, когда я пытаюсь вызвать значение в моем /app/config/application.rb

config.action_controller.asset_host = Settings.environhost 

Для этого я получаю неинициализированный постоянная.

Есть в любом случае я могу поставить указатель на мой application.rb загрузить _settings.rb перед тем

config.action_controller.asset_host = Settings.environhost 

загружается? Каков наилучший способ сделать это?

http://guides.rubyonrails.org/initialization.html

+0

связанные с wiki: https://github.com/binarylogic/settingslogic/wiki/Use-Settings-in-your-Rails-initializers –

ответ

0

Rails собственной конфигурации всегда будет загружен до любых пользовательских вещей, это точно. В противном случае вы можете себе представить, какой беспорядок :)

Решение не пытаться загрузить до конфигурации Rails. Вместо этого подключитесь к инициализатору, чтобы добавить свою собственную логику, чтобы переопределить значение по умолчанию для Rails.

Railtie - это место, где вы можете сделать это без пота. Здесь вы можете получить доступ к методу config, который используется во всех инициализаторах, включая Rails.

module MySettings 
    def self.environhost 
    "foobar" 
    end 

    class MySettingsRailtie < Rails::Railtie 
    config.action_controller.asset_host = MySettings.environhost 
    end 
end 

Side Примечание: В большинстве случаев вы должны быть хорошо установить хост активов, как mu_is_too_short прокомментировал. Если вам нужно что-то другое, вы можете использовать пользовательский intializer от Railtie.

+0

интересно. Я собираюсь попробовать это завтра утром! Если это сработает, я дам вам знать и пометьте ответ! – jamesdlivesinatree

+0

спасибо, что это работает, и вы правы, я не знаю, почему я не думал настраивать его в отдельных средах. спасибо, хотя это позволяет мне обойти это :) – jamesdlivesinatree

Смежные вопросы