Подтвердить что ты не робот

В каком порядке загружаются файлы конфигурации для Rails?

Я пытаюсь инициализировать разные камни для разных сред. Я использую файлы конфигурации инициализатора (для таких вещей, как Paperclip) и файлы конфигурации среды (для моей среды dev, test, qa, prod).

В каком-то контексте я пытаюсь заставить свои серверы prod и qa использовать хранилище S3 для Paperclip, но использовать локальное хранилище с разными каталогами для dev и test. Я понятия не имею, в каком порядке загружаются эти файлы конфигурации.

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

Меня особенно интересуют каталоги/файлы, перечисленные ниже

config/
    environments/
        develop.rb
        test.rb
        ...env-specific config files


    initializers/
        paperclip.rb
        ...gem-specific config files

    application.rb
    boot.rb
    deploy.rb
    environment.rb
    routes.rb

Спасибо!

4b9b3361

Ответ 1

Рельсы 4

Обновлено сентябрь 2013: для Rails 4 он снова изменился. В настоящее время существует руководство Rails-4 в процессе инициализации Rails. Вы заметите, что этот список намного короче, чем тот, который используется для Rails 3. Я не уверен, что они удалили часть глубины или что... Не было времени, чтобы пройти все это:

  • бен/рельсы
  • конфиг /boot.rb
  • Рельсы /commands.rb
  • actionpack/Library/action_dispatch.rb
  • рельсы/команды/server.rb
  • Стойка: lib/rack/server.rb
  • конфигурации/приложения
  • Рельсы:: Сервер # старт
  • конфиг /environment.rb
  • конфиг /application.rb
  • Railties/Library/Рельсы/all.rb
  • Вернуться к config/environment.rb
  • Railties/Library/Рельсы/application.rb
  • Стойка: lib/rack/server.rb

Подробнее о том, как настроить некоторые из этих файлов, см. в Rails-4 Руководство по настройке Rails-приложений


Рельсы 3

Обновлено Sep 2013: для Rails 3 он, похоже, сильно изменился. Теперь существует руководство Rails-3 в процессе инициализации Rails:

  • bin/rails railties/lib/rails/cli.rb script/rails config/boot.rb
  • rails/commands.rb actionpack/lib/action_dispatch.rb
  • ActiveSupport/Library/active_support.rb
  • ActiveSupport/Library/active_support/lazy_load_hooks.rb
  • ActiveSupport/Library/active_support/инфлектор/methods.rb
  • actionpack/lib/action_dispatch.rb contd. рельсы/команды/server.rb
  • Rack: lib/rack/server.rb Rails:: Server # start config/environment.rb
  • config/application.rb Загрузка Rails railss/lib/rails/all.rb
  • railties/lib/rails.rb railties/lib/rails/ruby_version_check.rb
  • active_support/core_ext/ядро ​​/reporting.rb
  • active_support/core_ext/logger.rb railties/lib/rails/application.rb
  • active_support/file_update_checker.rb railties/lib/rails/plugin.rb
  • railties/lib/rails/engine.rb railties/lib/rails/railtie.rb
  • Railties/Library/Рельсы/initializable.rb
  • Railties/Library/Рельсы/configuration.rb
  • ActiveSupport/Library/active_support/deprecation.rb
  • ActiveSupport/Library/active_support/неодобрение/behaviors.rb
  • ActiveSupport/Library/active_support/notifications.rb
  • ActiveSupport/core_ext/массив/завернуть
  • ActiveSupport/Library/active_support/неодобрение/reporting.rb
  • ActiveSupport/Library/active_support/неодобрение/method_wrappers.rb
  • ActiveSupport/Library/active_support/неодобрение/proxy_wrappers.rb
  • active_support/ordered_options railties/lib/rails/paths.rb
  • Railties/Library/Рельсы/rack.rb
  • ActiveSupport/Library/active_support/inflector.rb
  • active_support/перегибы
  • activesupport/lib/active_support/inflector/transliterate.rb Вернуться к
  • railties/lib/rails/railtie.rb railties/lib/rails/engine/railties.rb
  • Вернуться к railties/lib/rails/engine.rb Вернуться к
  • railties/lib/rails/plugin.rb Вернуться к
  • railties/lib/rails/application.rb railties/lib/rails/version.rb
  • ActiveSupport/Library/active_support/railtie.rb
  • ActiveSupport/Library/active_support/i18n_railtie.rb
  • railties/lib/rails/railtie/configuration.rb Вернуться к
  • activesupport/lib/active_support/i18n_railtie.rb Вернуться к
  • ActiveSupport/Library/active_support/railtie.rb
  • ActiveSupport/Library/action_dispatch/railtie.rb
  • activesupport/lib/action_dispatch.rb activemodel/lib/active_model.rb
  • activesupport/lib/active_support/i18n.rb Вернуться к
  • activesupport/lib/action_dispatch.rb Вернуться к
  • activesupport/lib/action_dispatch/railtie.rb Вернуться к
  • railties/lib/rails.rb Вернуться к railties/lib/rails/all.rb
  • ActiveRecord/Library/active_record/railtie.rb
  • activerecord/lib/active_record.rb Вернуться к
  • ActiveRecord/Library/active_record/railtie.rb
  • actionpack/Library/action_controller/railtie.rb
  • actionpack/Library/action_view.rb

Подробнее о том, как настроить некоторые из этих файлов, см. в Руководство по настройке Rails-приложений Rails-3


Рельсы 2

Первоначально (декабрь 2011), я наткнулся на сообщение в блоге, в котором было удивительное объяснение Как процесс инициализации работал для Rails 2.

  • конфиг /preinitializer.rb
  • конфиг /environment.rb
  • конфигурации/среда/# {RAILS_ENV}.rb
  • инициализация плагинов
  • инициализация драгоценных камней
  • конфиг/инициализатор/*. Гь
  • все after_initialize блоки, в порядке их определения (так же, как и выше)
  • любой нежелательный файл, оставшийся ниже вызова/блока Rails:: Initializer.run в среде environment.rb

Подробнее о том, как настроить некоторые из этих файлов, см. в Rails-2 Руководство по настройке Rails-приложений

Ответ 2

Этот ответ используется для дополнения принятого ответа, принятый ответ не упоминал при загрузке файлов development.rb и других init.

В ruby ​​2.0 я вставляю следующий код в bin/rails, а затем запускаю 'bin/rails s' для просмотра порядка загрузки файлов локальных приложений. В этом примере мое имя проекта - bole_api.

files = []
tp = TracePoint.new(:line) do |tp|
  if tp.path =~ /bole_api/
    unless files.include? tp.path
    puts "#{tp.path}".inspect
    files.push(tp.path)
    end
  end
end
tp.enable

и мой локальный результат

"/home/leijing/studio/bole_api/bin/rails"
"/home/leijing/studio/bole_api/config/boot.rb"
"/home/leijing/studio/bole_api/Gemfile"
"/home/leijing/studio/bole_api/config/application.rb"
=> Booting WEBrick
=> Rails 4.1.1 application starting in development on http://0.0.0.0:3000
=> Run `rails server -h` for more startup options
=> Notice: server is listening on all interfaces (0.0.0.0). Consider using 127.0.0.1 (--binding option)
=> Ctrl-C to shutdown server
"/home/leijing/studio/bole_api/config.ru"
"/home/leijing/studio/bole_api/config/environment.rb"
"/home/leijing/studio/bole_api/config/environments/development.rb"
"/home/leijing/studio/bole_api/config/initializers/carrierwave.rb"
"/home/leijing/studio/bole_api/config/initializers/cookies_serializer.rb"
"/home/leijing/studio/bole_api/config/initializers/filter_parameter_logging.rb"
"/home/leijing/studio/bole_api/config/initializers/rabl_init.rb"
"/home/leijing/studio/bole_api/config/initializers/session_store.rb"
"/home/leijing/studio/bole_api/config/initializers/wrap_parameters.rb"
"/home/leijing/studio/bole_api/config/routes.rb"
"/home/leijing/studio/bole_api/app/api/bole_app_api.rb"
"/home/leijing/studio/bole_api/app/api/home_api.rb"
"/home/leijing/studio/bole_api/app/api/video_api.rb"
[2014-06-27 11:06:57] INFO  WEBrick 1.3.1
[2014-06-27 11:06:57] INFO  ruby 2.1.0 (2013-12-25) [x86_64-linux]
[2014-06-27 11:06:57] INFO  WEBrick::HTTPServer#start: pid=30157 port=3000

Из вышесказанного вы можете получить представление о порядке загрузки локальных файлов. И объедините вывод http://edgeguides.rubyonrails.org/initialization.html, вы можете получить представление о целом процессе инициализации.