Редизайн 3 Порядок инициализации

Может кто-нибудь, пожалуйста, укажите мне в правильном направлении порядок, в котором будут создаваться модули рельсов.

Основные вещи, которые я пытаюсь найти:

1) Когда загружаются драгоценные камни?

2) Когда загружаются config/initializers/*?

3) Когда обрабатываются именованные маршруты в route.rb?

Ответы

Ответ 1

Проверьте этот безумно детализированный (и длинный) фрагмент документации по процессу инициализации:

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

Ответ 2

Ответ на ваш вопрос легко, добавив несколько операторов puts в ваше приложение Rails. (Кажется, многие люди неохотно копаются и делают это, но я действительно рекомендую это!) Итак, только экспериментированием и наблюдением, вот порядок вещей, о которых вы упомянули:

  • boot.rb
  • config/initializers/*
  • routes.rb

Вот немного подробнее:

1. 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'])

2. 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

3. routes.rb

По наблюдениям, я вижу, что маршрут чертежа (спецификация) происходит следующим образом.

Но просмотр деталей более актуален, поэтому, если вы заинтересованы, я бы прочитал SO: Контролируя порядок загрузки маршрутов с Engines и, возможно, взгляните на : инициализатор add_routing_paths в engine.rb.

Ответ 3

Я начал консоль в Rails 3, и вот порядок:

  • script/rails
  • config/boot.rb
  • config/application.rb
  • config/environment.rb
  • config/initializers/*.rb (В алфавитном порядке)

Ответ 4

Я действительно не знаю, но логически в этом порядке

  • драгоценные камни
  • Инициализаторы
  • маршруты

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

2) Инициализаторы, вероятно, загружаются во-вторых или, по крайней мере, с учетом трех вещей, о которых вы упомянули, потому что они могут загружать информацию или модули, которые маршрутируются с ресурсами и ассоциациями.

3) Процесс элиминации


В терминах внутреннего порядка, вероятно, abc

Не воспринимайте это всерьез, хотя:)