allomov
8/12/2011 - 10:28 AM

overview of rails 2.3.12 initialization

overview of rails 2.3.12 initialization

module Rails
  class Initializer

    # Sequentially step through all of the available initialization routines,
    # in order (view execution order in source).
    def process
      Rails.configuration = configuration

      check_ruby_version
      install_gem_spec_stubs
      set_load_path
      add_gem_load_paths

      require_frameworks
      set_autoload_paths
      add_plugin_load_paths
      load_environment
      preload_frameworks

      initialize_encoding
      initialize_database

      initialize_cache
      initialize_framework_caches

      initialize_logger
      initialize_framework_logging

      initialize_dependency_mechanism
      initialize_whiny_nils

      initialize_time_zone
      initialize_i18n

      initialize_framework_settings
      initialize_framework_views

      initialize_metal

      add_support_load_paths

      check_for_unbuilt_gems

      load_gems
      load_plugins

      # pick up any gems that plugins depend on
      add_gem_load_paths
      load_gems
      check_gem_dependencies

      # bail out if gems are missing - note that check_gem_dependencies will have
      # already called abort() unless $gems_rake_task is set
      return unless gems_dependencies_loaded

      load_application_initializers

      # the framework is now fully initialized
      after_initialize

      # Setup database middleware after initializers have run
      initialize_database_middleware

      # Prepare dispatcher callbacks and run 'prepare' callbacks
      prepare_dispatcher

      # Routing must be initialized after plugins to allow the former to extend the routes
      initialize_routing

      # Observers are loaded after plugins in case Observers or observed models are modified by plugins.
      load_observers

      # Load view path cache
      load_view_paths

      # Load application classes
      load_application_classes

      # Disable dependency loading during request cycle
      disable_dependency_loading

      # Flag initialized
      Rails.initialized = true
    end
  end
end