2011-12-29 17 views
26

Estoy en el proceso de intentar inicializar diferentes gemas para diferentes entornos. Estoy usando archivos de configuración de inicializador (para cosas como Paperclip) y archivos de configuración de entorno (para mis entornos de desarrollo, prueba, qa, prod).¿En qué orden se cargan los archivos de configuración para Rails?

Por algún motivo, intento que mis servidores de prod y qa usen almacenamiento S3 para Paperclip, pero utilicen el almacenamiento local con diferentes directorios para desarrollo y prueba. No tengo idea de en qué orden se cargan estos archivos de configuración.

Me preguntaba si alguien podría arrojar algo de luz sobre la orden de carga para poder asegurarme de que tengo alguna dependencia o sobrescritura correcta. Además, solo me gusta saber cómo funcionan estas cosas.

Estoy particularmente interesado en los directorios/archivos enumeran a continuación

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 

Gracias!

Respuesta

45

Carriles 4

Actualizado Sep 2013: para los carriles 4 que parece haber cambiado de nuevo. Ahora hay un Rails-4 Guide on The Rails Initialization Process. Notarás que esta lista es mucho más corta que la de Rails 3. No estoy seguro de si eliminaron algo de la profundidad o qué ... No he tenido tiempo de repasarlo todo:

  1. bin/carriles
  2. config/boot.rb
  3. rieles/commands.rb
  4. actionpack/lib/action_dispatch.rb
  5. rieles/comandos/server.rb
  6. rack: lib/rack/server.rb
  7. config/aplicación
  8. Rails :: Server # inicia
  9. config/environment.rb
  10. config/application.rb
  11. railties/lib/rieles/all.rb
  12. Volver a config/entorno .rb
  13. railties/lib/rieles/application.rb
  14. rack: lib/estante/server.rb

Para obtener información más detallada sobre cómo configurar algunos de estos archivos ver los Rails-4 Guide on Configuring Rails Applications


Rails 3

Actualizado Sep 2013: Para Rails 3 que parece haber cambiado mucho. Ahora hay una Rails-3 Guide on The Rails Initialization Process:

  1. bin/carriles railties/lib/rieles/script cli.rb/rieles config/boot.rb
  2. rieles/commands.rb actionpack/lib/action_dispatch.rb
  3. activesupport/lib/active_support.rb
  4. activesupport/lib/active_support/lazy_load_hooks.rb
  5. activesupport/lib/active_support/inflector/methods.rb
  6. actionpack/lib/action_dispatch.rb cont. raíles/comandos/server.rb
  7. rack: lib/estante/server.rb Rails :: Server # inicia config/environment.rb
  8. config/application.rb Carga Rieles railties/lib/rieles/all.rb
  9. railties/lib railties/rails.rb/lib/rieles/ruby_version_check.rb
  10. active_support/core_ext/kernel/reporting.rb
  11. active_support/core_ext/logger.rb railties/lib/rieles/application.rb
  12. active_support/file_update_checker.rb railties/lib/rails/plugin.rb
  13. railties/lib/rai ls/railties engine.rb/lib/carriles/railtie.rb
  14. railties/lib/carriles/initializable.rb
  15. railties/lib/carriles/configuration.rb
  16. ActiveSupport/lib/active_support/deprecation.rb
  17. ActiveSupport/lib/active_support/deprecation/behaviors.rb
  18. ActiveSupport/lib/active_support/notifications.rb
  19. ActiveSupport/core_ext/matriz/envolver
  20. ActiveSupport/lib/active_support/deprecation/reporting.rb
  21. ActiveSupport/lib/active_support/deprecation/method_wrappers.rb
  22. ActiveSupport/lib/active_support/deprecation/proxy_wrappers.rb
  23. active_support/ordered_options railties/lib/carriles/paths.rb
  24. railties/lib/rieles /rack.rb
  25. ActiveSupport/lib/active_support/inflector.rb
  26. active_support/inflexiones
  27. ActiveSupport/lib/active_support/inflector/transliterate.rb Volver a
  28. railties/lib/rieles de ferrocarril/railties tie.rb/lib/rieles/motor/railties.rb
  29. Volver a railties/lib/rieles/engine.rb Volver a
  30. railties/lib/rieles/plugin.rb Volver a
  31. railties/lib /rails/application.rb railties/lib/carriles/version.rb
  32. ActiveSupport/lib/active_support/railtie.rb
  33. ActiveSupport/lib/active_support/i18n_railtie.rb
  34. railties/lib/carriles/railtie/configuration.rb Volver a
  35. activesupport/lib/active_support/i18n_railtie.rb Regresar a
  36. ActiveSupport/lib/active_support/railtie.rb
  37. ActiveSupport/lib/action_dispatch/railtie.rb
  38. ActiveSupport/lib/action_dispatch.rb ActiveModel/lib/active_model.rb
  39. ActiveSupport/lib/active_support/i18n.rb Volver a
  40. activesupport/lib/action_dispatch.rb Volver a
  41. ActiveSupport/lib/action_dispatch/railtie.rb Volver a
  42. railties/lib/rails.rb Volver a railties/lib/rieles/all.rb
  43. activerecord/lib/active_record/railtie.rb
  44. activerecord/lib/active_record.rb Volver a
  45. activerecord/lib/active_record/railtie.rb
  46. actionpack/lib/action_controller/railtie.rb
  47. actionpack/lib/action_view.rb

Para obtener información más detallada sobre cómo configurar algunos de estos archivos ver los Rails-3 Guide on Configuring Rails Applications


Carriles 2

originalmente (diciembre de 2011), me encontré con un blog que tenía una explicación increíble de How the Initialization Process Worked for Rails 2 .

  1. config/preinitializer.rb
  2. config/environment.rb
  3. config/ambientes/# {} RAILS_ENV .rb
  4. plugin de inicialización
  5. joya inicialización
  6. config/inicializador/* .rb
  7. todos los bloques after_initialize, en el orden en que se definieron en (el mismo orden que el anterior)
  8. cualquier basura izquierda debajo de los carriles :: Initializer.run llamada/bloque en environment.rb

Para obtener información más detallada sobre cómo configurar algunos de estos archivos ver la Rails-2 Guide on Configuring Rails Applications

+0

¿es esto para raíles 2? No creo que Rails 3 tenga preinitializer.rb – Dty

+1

, también debe agregar las callbacks before_initialize que se ejecutan después de los archivos de entorno y antes de los inicializadores. –

+0

Tengo config/boot.rb en una aplicación Rails 2, no esto tiene sentido? – juanpastas

12

Esta respuesta se utiliza para complementar la respuesta aceptada, la respuesta aceptada no mencionó cuando se cargan development.rb y otros archivos init.

En ruby ​​2.0, inserto el siguiente código en bin/rails, luego ejecuto 'bin/rails s' para ver el orden de carga de los archivos de la aplicación local. En este ejemplo, el nombre de mi proyecto es 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 

y mi resultado local es

"/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 

A partir del resultado anterior, se puede obtener una vista de la orden de la cantidad de archivos locales cargado. Y combine la conclusión de http://edgeguides.rubyonrails.org/initialization.html, puede obtener una vista de todo el proceso de inicialización.

Cuestiones relacionadas