В каком порядке загружаются файлы конфигурации для Rails? - PullRequest
27 голосов
/ 30 декабря 2011

Я пытаюсь инициализировать разные драгоценные камни для разных сред. Я использую файлы конфигурации инициализатора (для таких вещей, как 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

Спасибо!

Ответы [ 2 ]

46 голосов
/ 30 декабря 2011

Рельсы 4

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

  1. бен / Рельсы
  2. конфиг / boot.rb
  3. Рельсы / commands.rb
  4. actionpack / Lib / action_dispatch.rb
  5. рельсы / команды / server.rb
  6. Стойка: lib / rack / server.rb
  7. конфигурация / приложение
  8. Rails :: Сервер # начать
  9. конфиг / environment.rb
  10. конфиг / application.rb
  11. Railties / Библиотека / Рельсы / all.rb
  12. Вернуться в config / environment.rb
  13. Railties / Библиотека / Рельсы / application.rb
  14. Стойка: lib / rack / server.rb

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


Рельсы 3

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

  1. bin / rails railties / lib / rails / cli.rb скрипт / rails config / boot.rb
  2. rails / commands.rb actionpack / lib / action_dispatch.rb
  3. ActiveSupport / Lib / active_support.rb
  4. ActiveSupport / Библиотека / active_support / lazy_load_hooks.rb
  5. ActiveSupport / Библиотека / active_support / инфлектор / methods.rb
  6. actionpack / lib / action_dispatch.rb продолжение. рельсы / команды / server.rb * +1061 *
  7. Стойка: lib / rack / server.rb Rails :: Server # start config / environment.rb
  8. config / application.rb Загрузка Rails railties / lib / rails / all.rb
  9. railties / lib / rails.rb railties / lib / rails / ruby_version_check.rb
  10. active_support / core_ext / ядро ​​/ reporting.rb
  11. active_support / core_ext / logger.rb railties / lib / rails / application.rb
  12. active_support / file_update_checker.rb railties / lib / rails / plugin.rb
  13. railties / lib / rails / engine.rb railties / lib / rails / railtie.rb
  14. Railties / Lib / рельсы / initializable.rb
  15. Railties / Библиотека / Рельсы / configuration.rb
  16. ActiveSupport / Библиотека / active_support / deprecation.rb
  17. ActiveSupport / Библиотека / active_support / неодобрение / behaviors.rb
  18. ActiveSupport / Библиотека / active_support / notifications.rb
  19. ActiveSupport / core_ext / массив / упаковка
  20. ActiveSupport / Библиотека / active_support / неодобрение / reporting.rb
  21. ActiveSupport / Библиотека / active_support / неодобрение / method_wrappers.rb
  22. ActiveSupport / Библиотека / active_support / неодобрение / proxy_wrappers.rb
  23. active_support / orders_options railties / lib / rails / paths.rb
  24. Railties / Lib / рельсы / rack.rb
  25. ActiveSupport / Библиотека / active_support / inflector.rb
  26. active_support / перегибы
  27. activesupport / lib / active_support / inflector / transiterate.rb Вернуться к
  28. railties / lib / rails / railtie.rb railties / lib / rails / engine / railties.rb
  29. Вернуться к railties / lib / rails / engine.rb Вернуться к
  30. railties / lib / rails / plugin.rb Вернуться к
  31. railties / lib / rails / application.rb railties / lib / rails / version.rb
  32. ActiveSupport / Библиотека / active_support / railtie.rb
  33. ActiveSupport / Библиотека / active_support / i18n_railtie.rb
  34. railties / lib / rails / railtie / configuration.rb Вернуться к
  35. activesupport / lib / active_support / i18n_railtie.rb Вернуться к
  36. ActiveSupport / Библиотека / active_support / railtie.rb
  37. ActiveSupport / Библиотека / action_dispatch / railtie.rb
  38. activesupport / lib / action_dispatch.rb activemodel / lib / active_model.rb
  39. activesupport / lib / active_support / i18n.rb Вернуться к
  40. activesupport / lib / action_dispatch.rb Вернуться к
  41. activesupport / lib / action_dispatch / railtie.rb Вернуться к
  42. railties / lib / rails.rb Вернуться к railties / lib / rails / all.rb
  43. ActiveRecord / Библиотека / active_record / railtie.rb
  44. activerecord / lib / active_record.rb Вернуться к
  45. ActiveRecord / Библиотека / active_record / railtie.rb
  46. actionpack / Библиотека / action_controller / railtie.rb
  47. actionpack / Библиотека / action_view.rb

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


Рельсы 2

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

  1. конфиг / preinitializer.rb
  2. конфиг / environment.rb
  3. инициализация плагина
  4. инициализация драгоценного камня
  5. конфиг / инициализатор / *. Гь
  6. все блоки after_initialize в том порядке, в котором они были определены (в том же порядке, что и выше)
  7. любой мусор, оставленный ниже вызова / блока Rails :: Initializer.run в environment.rb

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

12 голосов
/ 27 июня 2014

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

В 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,, вы можете получить представление обо всем процессе инициализации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...