Как изменить порядок загрузки инициализаторов в Rails 3?
У меня есть инициализатор, который загружает параметры конфигурации из файла yaml. Мне нужно использовать эти настройки в других инициализаторах. Настройки не видны инициализаторам, которые в них нуждаются. Я думаю, что происходит то, что настройки загружаются слишком поздно. Как я могу гарантировать, что мой инициализатор конфигурации загружается первым? Это un-rails, как иметь инициализаторы зависят от другого?
спасибо!
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