Как изменить порядок загрузки инициализаторов в Rails 3?



У меня есть инициализатор, который загружает параметры конфигурации из файла yaml. Мне нужно использовать эти настройки в других инициализаторах. Настройки не видны инициализаторам, которые в них нуждаются. Я думаю, что происходит то, что настройки загружаются слишком поздно. Как я могу гарантировать, что мой инициализатор конфигурации загружается первым? Это un-rails, как иметь инициализаторы зависят от другого?



спасибо!

634   4  

4 ответов:

переименовать инициализатор в 01_name.rb, что заставит его загрузить в алфавитном порядке ранее.

Edit

процитировать чиновника направляющие рельсы для конфигурации (спасибо zetetic для подсказки):

Если у вас есть какие-либо зависимости заказа в ваши инициализаторы, вы можете контролировать загрузите заказ по именованию. Например, 01_critical.РБ будет загружен до 02_normal.рубидий.

поместите код конфигурации в config / environment.rb-файл, сразу после первого оператора require, например:

# Load the rails application
require File.expand_path('../application', __FILE__)

# Load global configurations
CONFIG = Hashie::Mash.new YAML.load_file(Rails.root.join("config", "application.yml"))[Rails.env]

# Initialize the rails application
RailsSetup::Application.initialize!

несмотря на то, что руководство рекомендует добавлять имена файлов инициализатора с числами, это кажется уродливым. Другой способ заключается в использовании предоставленных крючков инициализации. См.http://guides.rubyonrails.org/configuring.html#initialization-events

например.

# application.rb

module YourApp
  class Application < Rails::Application
    config.before_initialize do
     # initialization code goes here
    end
  end
end

используйте require_relative, чтобы убедиться, что один файл загружен первым.

# aaa.rb
require_relative 'bbb'
# ... code using values from bbb.rb ...

Comments

    Ничего не найдено.