Ответ 1
Проверьте этот безумно детализированный (и длинный) фрагмент документации по процессу инициализации:
Может кто-нибудь, пожалуйста, укажите мне в правильном направлении порядок, в котором будут создаваться модули рельсов.
Основные вещи, которые я пытаюсь найти:
1) Когда загружаются драгоценные камни?
2) Когда загружаются config/initializers/*?
3) Когда обрабатываются именованные маршруты в route.rb?
Проверьте этот безумно детализированный (и длинный) фрагмент документации по процессу инициализации:
Ответ на ваш вопрос легко, добавив несколько операторов puts
в ваше приложение Rails. (Кажется, многие люди неохотно копаются и делают это, но я действительно рекомендую это!) Итак, только экспериментированием и наблюдением, вот порядок вещей, о которых вы упомянули:
boot.rb
config/initializers/*
routes.rb
Вот немного подробнее:
boot.rb
Это загружает прикладные камни с помощью bundler:
require 'rubygems'
# Set up gems listed in the Gemfile.
ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__)
require 'bundler/setup' if File.exists?(ENV['BUNDLE_GEMFILE'])
config/initializers/*
Они выполняются в алфавитном порядке.
Если вам интересно, что вызывает это, посмотрите engine.rb в исходном коде railties. (Полезно знать, что Rails-приложение является подклассом Rails Engine.)
initializer :load_config_initializers do
config.paths["config/initializers"].existent.sort.each do |initializer|
load(initializer)
end
end
routes.rb
По наблюдениям, я вижу, что маршрут чертежа (спецификация) происходит следующим образом.
Но просмотр деталей более актуален, поэтому, если вы заинтересованы, я бы прочитал SO: Контролируя порядок загрузки маршрутов с Engines и, возможно, взгляните на : инициализатор add_routing_paths в engine.rb.
Я начал консоль в Rails 3, и вот порядок:
script/rails
config/boot.rb
config/application.rb
config/environment.rb
config/initializers/*.rb
(В алфавитном порядке)Я действительно не знаю, но логически в этом порядке
1) Единственный способ, которым я знаю, как редактировать драгоценные камни, - это отредактировать исходный файл. Кроме того, рельсы сами и в основном все с рельсами - это драгоценный камень, поэтому я уверен, что они загружены первыми
2) Инициализаторы, вероятно, загружаются во-вторых или, по крайней мере, с учетом трех вещей, о которых вы упомянули, потому что они могут загружать информацию или модули, которые маршрутируются с ресурсами и ассоциациями.
3) Процесс элиминации
В терминах внутреннего порядка, вероятно, abc
Не воспринимайте это всерьез, хотя:)