Class: Rails::Initializer
- Inherits:
-
Object
- Object
- Rails::Initializer
- Defined in:
- lib/rails-2.3.14/initializer.rb
Overview
The Initializer is responsible for processing the Rails configuration, such as setting the $LOAD_PATH, requiring the right frameworks, initializing logging, and more. It can be run either as a single command that’ll just use the default configuration, like this:
Rails::Initializer.run
But normally it’s more interesting to pass in a custom configuration through the block running:
Rails::Initializer.run do |config|
config.frameworks -= [ :action_mailer ]
end
This will use the default configuration options from Rails::Configuration, but allow for overwriting on select areas.
Instance Attribute Summary collapse
-
#configuration ⇒ Object
readonly
The Configuration instance used by this Initializer instance.
-
#gems_dependencies_loaded ⇒ Object
readonly
Whether or not all the gem dependencies have been met.
-
#loaded_plugins ⇒ Object
readonly
The set of loaded plugins.
Class Method Summary collapse
-
.run(command = :process, configuration = Configuration.new) {|configuration| ... } ⇒ Object
Runs the initializer.
Instance Method Summary collapse
- #add_gem_load_paths ⇒ Object
-
#add_plugin_load_paths ⇒ Object
Adds all load paths from plugins to the global set of load paths, so that code from plugins can be required (explicitly or automatically via ActiveSupport::Dependencies).
-
#add_support_load_paths ⇒ Object
Add the load paths used by support functions such as the info controller.
-
#after_initialize ⇒ Object
Fires the user-supplied after_initialize block (Configuration#after_initialize).
- #check_for_unbuilt_gems ⇒ Object
- #check_gem_dependencies ⇒ Object
-
#check_ruby_version ⇒ Object
Check for valid Ruby version This is done in an external file, so we can use it from the ‘rails` program as well without duplication.
- #disable_dependency_loading ⇒ Object
-
#initialize(configuration) ⇒ Initializer
constructor
Create a new Initializer instance that references the given Configuration instance.
- #initialize_cache ⇒ Object
-
#initialize_database ⇒ Object
This initialization routine does nothing unless
:active_record
is one of the frameworks to load (Configuration#frameworks). - #initialize_database_middleware ⇒ Object
-
#initialize_dependency_mechanism ⇒ Object
Sets the dependency loading mechanism based on the value of Configuration#cache_classes.
-
#initialize_encoding ⇒ Object
For Ruby 1.8, this initialization sets $KCODE to ‘u’ to enable the multibyte safe operations.
- #initialize_framework_caches ⇒ Object
-
#initialize_framework_logging ⇒ Object
Sets the logger for Active Record, Action Controller, and Action Mailer (but only for those frameworks that are to be loaded).
-
#initialize_framework_settings ⇒ Object
Initializes framework-specific settings for each of the loaded frameworks (Configuration#frameworks).
-
#initialize_framework_views ⇒ Object
Sets ActionController::Base#view_paths and ActionMailer::Base#template_root (but only for those frameworks that are to be loaded).
-
#initialize_i18n ⇒ Object
Set the i18n configuration from config.i18n but special-case for the load_path which should be appended to what’s already set instead of overwritten.
-
#initialize_logger ⇒ Object
If the RAILS_DEFAULT_LOGGER constant is already set, this initialization routine does nothing.
- #initialize_metal ⇒ Object
-
#initialize_routing ⇒ Object
If Action Controller is not one of the loaded frameworks (Configuration#frameworks) this does nothing.
-
#initialize_time_zone ⇒ Object
Sets the default value for Time.zone, and turns on ActiveRecord::Base#time_zone_aware_attributes.
-
#initialize_whiny_nils ⇒ Object
Loads support for “whiny nil” (noisy warnings when methods are invoked on
nil
values) if Configuration#whiny_nils is true. -
#install_gem_spec_stubs ⇒ Object
If Rails is vendored and RubyGems is available, install stub GemSpecs for Rails, Active Support, Active Record, Action Pack, Action Mailer, and Active Resource.
-
#load_application_classes ⇒ Object
Eager load application classes.
- #load_application_initializers ⇒ Object
-
#load_environment ⇒ Object
Loads the environment specified by Configuration#environment_path, which is typically one of development, test, or production.
- #load_gems ⇒ Object
- #load_observers ⇒ Object
-
#load_plugins ⇒ Object
Loads all plugins in
config.plugin_paths
. - #load_view_paths ⇒ Object
- #plugin_loader ⇒ Object
-
#preload_frameworks ⇒ Object
Preload all frameworks specified by the Configuration#frameworks.
- #prepare_dispatcher ⇒ Object
-
#process ⇒ Object
Sequentially step through all of the available initialization routines, in order (view execution order in source).
-
#require_frameworks ⇒ Object
Requires all frameworks specified by the Configuration#frameworks list.
-
#set_autoload_paths ⇒ Object
Set the paths from which Rails will automatically load source files, and the load_once paths.
-
#set_load_path ⇒ Object
Set the
$LOAD_PATH
based on the value of Configuration#autoload_paths.
Constructor Details
#initialize(configuration) ⇒ Initializer
Create a new Initializer instance that references the given Configuration instance.
123 124 125 126 |
# File 'lib/rails-2.3.14/initializer.rb', line 123 def initialize(configuration) @configuration = configuration @loaded_plugins = [] end |
Instance Attribute Details
#configuration ⇒ Object (readonly)
The Configuration instance used by this Initializer instance.
98 99 100 |
# File 'lib/rails-2.3.14/initializer.rb', line 98 def configuration @configuration end |
#gems_dependencies_loaded ⇒ Object (readonly)
Whether or not all the gem dependencies have been met
104 105 106 |
# File 'lib/rails-2.3.14/initializer.rb', line 104 def gems_dependencies_loaded @gems_dependencies_loaded end |
#loaded_plugins ⇒ Object (readonly)
The set of loaded plugins.
101 102 103 |
# File 'lib/rails-2.3.14/initializer.rb', line 101 def loaded_plugins @loaded_plugins end |
Class Method Details
.run(command = :process, configuration = Configuration.new) {|configuration| ... } ⇒ Object
Runs the initializer. By default, this will invoke the #process method, which simply executes all of the initialization routines. Alternately, you can specify explicitly which initialization routine you want:
Rails::Initializer.run(:set_load_path)
This is useful if you only want the load path initialized, without incurring the overhead of completely loading the entire environment.
114 115 116 117 118 119 |
# File 'lib/rails-2.3.14/initializer.rb', line 114 def self.run(command = :process, configuration = Configuration.new) yield configuration if block_given? initializer = new configuration initializer.send(command) initializer end |
Instance Method Details
#add_gem_load_paths ⇒ Object
303 304 305 306 307 308 309 310 |
# File 'lib/rails-2.3.14/initializer.rb', line 303 def add_gem_load_paths # Rails::GemDependency.add_frozen_gem_path unless @configuration.gems.empty? puts "add_gem_load_paths! #{@configuration.gems.inspect}" require "rubygems" @configuration.gems.each { |gem| gem.add_load_paths } end end |
#add_plugin_load_paths ⇒ Object
Adds all load paths from plugins to the global set of load paths, so that code from plugins can be required (explicitly or automatically via ActiveSupport::Dependencies).
299 300 301 |
# File 'lib/rails-2.3.14/initializer.rb', line 299 def add_plugin_load_paths plugin_loader.add_plugin_load_paths end |
#add_support_load_paths ⇒ Object
Add the load paths used by support functions such as the info controller
294 295 |
# File 'lib/rails-2.3.14/initializer.rb', line 294 def add_support_load_paths end |
#after_initialize ⇒ Object
Fires the user-supplied after_initialize block (Configuration#after_initialize)
634 635 636 637 638 639 640 |
# File 'lib/rails-2.3.14/initializer.rb', line 634 def after_initialize if gems_dependencies_loaded configuration.after_initialize_blocks.each do |block| block.call end end end |
#check_for_unbuilt_gems ⇒ Object
319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 |
# File 'lib/rails-2.3.14/initializer.rb', line 319 def check_for_unbuilt_gems unbuilt_gems = @configuration.gems.select(&:frozen?).reject(&:built?) if unbuilt_gems.size > 0 # don't print if the gems:build rake tasks are being run unless $gems_build_rake_task abort <<-end_error The following gems have native components that need to be built #{unbuilt_gems.map { |gem| "#{gem.name} #{gem.requirement}" } * "\n "} You're running: ruby #{Gem.ruby_version} at #{Gem.ruby} rubygems #{Gem::RubyGemsVersion} at #{Gem.path * ', '} Run `rake gems:build` to build the unbuilt gems. end_error end end end |
#check_gem_dependencies ⇒ Object
338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 |
# File 'lib/rails-2.3.14/initializer.rb', line 338 def check_gem_dependencies unloaded_gems = @configuration.gems.reject { |g| g.loaded? } if unloaded_gems.size > 0 @gems_dependencies_loaded = false # don't print if the gems rake tasks are being run unless $gems_rake_task abort <<-end_error Missing these required gems: #{unloaded_gems.map { |gem| "#{gem.name} #{gem.requirement}" } * "\n "} You're running: ruby #{Gem.ruby_version} at #{Gem.ruby} rubygems #{Gem::RubyGemsVersion} at #{Gem.path * ', '} Run `rake gems:install` to install the missing gems. end_error end else @gems_dependencies_loaded = true end end |
#check_ruby_version ⇒ Object
Check for valid Ruby version This is done in an external file, so we can use it from the ‘rails` program as well without duplication.
215 216 217 |
# File 'lib/rails-2.3.14/initializer.rb', line 215 def check_ruby_version require 'ruby_version_check' end |
#disable_dependency_loading ⇒ Object
660 661 662 663 664 |
# File 'lib/rails-2.3.14/initializer.rb', line 660 def disable_dependency_loading if configuration.cache_classes && !configuration.dependency_loading ActiveSupport::Dependencies.unhook! end end |
#initialize_cache ⇒ Object
474 475 476 477 478 479 480 481 482 483 |
# File 'lib/rails-2.3.14/initializer.rb', line 474 def initialize_cache unless defined?(RAILS_CACHE) silence_warnings { Object.const_set "RAILS_CACHE", ActiveSupport::Cache.lookup_store(configuration.cache_store) } if RAILS_CACHE.respond_to?(:middleware) # Insert middleware to setup and teardown local cache for each request configuration.middleware.insert_after(:"ActionController::Failsafe", RAILS_CACHE.middleware) end end end |
#initialize_database ⇒ Object
This initialization routine does nothing unless :active_record
is one of the frameworks to load (Configuration#frameworks). If it is, this sets the database configuration from Configuration#database_configuration and then establishes the connection.
454 455 456 457 458 459 |
# File 'lib/rails-2.3.14/initializer.rb', line 454 def initialize_database if configuration.frameworks.include?(:active_record) ActiveRecord::Base.configurations = configuration.database_configuration ActiveRecord::Base.establish_connection end end |
#initialize_database_middleware ⇒ Object
461 462 463 464 465 466 467 468 469 470 471 472 |
# File 'lib/rails-2.3.14/initializer.rb', line 461 def initialize_database_middleware if configuration.frameworks.include?(:active_record) if configuration.frameworks.include?(:action_controller) && ActionController::Base.session_store.name == 'ActiveRecord::SessionStore' configuration.middleware.insert_before :"ActiveRecord::SessionStore", ActiveRecord::ConnectionAdapters::ConnectionManagement configuration.middleware.insert_before :"ActiveRecord::SessionStore", ActiveRecord::QueryCache else configuration.middleware.use ActiveRecord::ConnectionAdapters::ConnectionManagement configuration.middleware.use ActiveRecord::QueryCache end end end |
#initialize_dependency_mechanism ⇒ Object
Sets the dependency loading mechanism based on the value of Configuration#cache_classes.
561 562 563 |
# File 'lib/rails-2.3.14/initializer.rb', line 561 def initialize_dependency_mechanism ActiveSupport::Dependencies.mechanism = configuration.cache_classes ? :require : :load end |
#initialize_encoding ⇒ Object
For Ruby 1.8, this initialization sets $KCODE to ‘u’ to enable the multibyte safe operations. Plugin authors supporting other encodings should override this behaviour and set the relevant default_charset
on ActionController::Base.
For Ruby 1.9, this does nothing. Specify the default encoding in the Ruby shebang line if you don’t want UTF-8.
446 447 448 |
# File 'lib/rails-2.3.14/initializer.rb', line 446 def initialize_encoding $KCODE='u' if RUBY_VERSION < '1.9' end |
#initialize_framework_caches ⇒ Object
485 486 487 488 489 |
# File 'lib/rails-2.3.14/initializer.rb', line 485 def initialize_framework_caches if configuration.frameworks.include?(:action_controller) ActionController::Base.cache_store ||= RAILS_CACHE end end |
#initialize_framework_logging ⇒ Object
Sets the logger for Active Record, Action Controller, and Action Mailer (but only for those frameworks that are to be loaded). If the framework’s logger is already set, it is not changed, otherwise it is set to use RAILS_DEFAULT_LOGGER.
527 528 529 530 531 532 533 534 |
# File 'lib/rails-2.3.14/initializer.rb', line 527 def initialize_framework_logging for framework in ([ :active_record, :action_controller, :action_mailer ] & configuration.frameworks) framework.to_s.camelize.constantize.const_get("Base").logger ||= Rails.logger end ActiveSupport::Dependencies.logger ||= Rails.logger Rails.cache.logger ||= Rails.logger end |
#initialize_framework_settings ⇒ Object
Initializes framework-specific settings for each of the loaded frameworks (Configuration#frameworks). The available settings map to the accessors on each of the corresponding Base classes.
620 621 622 623 624 625 626 627 628 629 630 631 |
# File 'lib/rails-2.3.14/initializer.rb', line 620 def initialize_framework_settings configuration.frameworks.each do |framework| base_class = framework.to_s.camelize.constantize.const_get("Base") configuration.send(framework).each do |setting, value| base_class.send("#{setting}=", value) end end configuration.active_support.each do |setting, value| ActiveSupport.send("#{setting}=", value) end end |
#initialize_framework_views ⇒ Object
Sets ActionController::Base#view_paths and ActionMailer::Base#template_root (but only for those frameworks that are to be loaded). If the framework’s paths have already been set, it is not changed, otherwise it is set to use Configuration#view_path.
540 541 542 543 544 545 546 |
# File 'lib/rails-2.3.14/initializer.rb', line 540 def initialize_framework_views if configuration.frameworks.include?(:action_view) view_path = ActionView::PathSet.type_cast(configuration.view_path) ActionMailer::Base.template_root = view_path if configuration.frameworks.include?(:action_mailer) && ActionMailer::Base.view_paths.blank? ActionController::Base.view_paths = view_path if configuration.frameworks.include?(:action_controller) && ActionController::Base.view_paths.blank? end end |
#initialize_i18n ⇒ Object
Set the i18n configuration from config.i18n but special-case for the load_path which should be appended to what’s already set instead of overwritten.
598 599 600 601 602 603 604 605 606 |
# File 'lib/rails-2.3.14/initializer.rb', line 598 def initialize_i18n configuration.i18n.each do |setting, value| if setting == :load_path I18n.load_path += value else I18n.send("#{setting}=", value) end end end |
#initialize_logger ⇒ Object
If the RAILS_DEFAULT_LOGGER constant is already set, this initialization routine does nothing. If the constant is not set, and Configuration#logger is not nil
, this also does nothing. Otherwise, a new logger instance is created at Configuration#log_path, with a default log level of Configuration#log_level.
If the log could not be created, the log will be set to output to STDERR
, with a log level of WARN
.
499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 |
# File 'lib/rails-2.3.14/initializer.rb', line 499 def initialize_logger # if the environment has explicitly defined a logger, use it return if Rails.logger unless logger = configuration.logger begin logger = ActiveSupport::BufferedLogger.new(configuration.log_path) logger.level = ActiveSupport::BufferedLogger.const_get(configuration.log_level.to_s.upcase) if configuration.environment == "production" logger.auto_flushing = false end rescue StandardError => e logger = ActiveSupport::BufferedLogger.new(STDERR) logger.level = ActiveSupport::BufferedLogger::WARN logger.warn( "Rails Error: Unable to access log file. Please ensure that #{configuration.log_path} exists and is chmod 0666. " + "The log level has been raised to WARN and the output directed to STDERR until the problem is fixed." ) end end silence_warnings { Object.const_set "RAILS_DEFAULT_LOGGER", logger } end |
#initialize_metal ⇒ Object
608 609 610 611 612 613 614 615 |
# File 'lib/rails-2.3.14/initializer.rb', line 608 def Rails::Rack::Metal. = configuration. Rails::Rack::Metal. += plugin_loader. configuration.middleware.insert_before( :"ActionController::ParamsParser", Rails::Rack::Metal, :if => Rails::Rack::Metal..any?) end |
#initialize_routing ⇒ Object
If Action Controller is not one of the loaded frameworks (Configuration#frameworks) this does nothing. Otherwise, it loads the routing definitions and sets up loading module used to lazily load controllers (Configuration#controller_paths).
551 552 553 554 555 556 557 |
# File 'lib/rails-2.3.14/initializer.rb', line 551 def initialize_routing return unless configuration.frameworks.include?(:action_controller) ActionController::Routing.controller_paths += configuration.controller_paths ActionController::Routing::Routes.add_configuration_file(configuration.routes_configuration_file) ActionController::Routing::Routes.reload! end |
#initialize_time_zone ⇒ Object
Sets the default value for Time.zone, and turns on ActiveRecord::Base#time_zone_aware_attributes. If assigned value cannot be matched to a TimeZone, an exception will be raised.
573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 |
# File 'lib/rails-2.3.14/initializer.rb', line 573 def initialize_time_zone if configuration.time_zone zone_default = nil time = Benchmark.realtime do # zone_default = Time.__send__(:get_zone, configuration.time_zone) zone_default = ActiveSupport::TimeZone.create('UTC') end unless zone_default raise \ 'Value assigned to config.time_zone not recognized.' + 'Run "rake -D time" for a list of tasks for finding appropriate time zone names.' end Time.zone_default = zone_default if configuration.frameworks.include?(:active_record) ActiveRecord::Base.time_zone_aware_attributes = true ActiveRecord::Base.default_timezone = :utc end end end |
#initialize_whiny_nils ⇒ Object
Loads support for “whiny nil” (noisy warnings when methods are invoked on nil
values) if Configuration#whiny_nils is true.
567 568 569 |
# File 'lib/rails-2.3.14/initializer.rb', line 567 def initialize_whiny_nils require('active_support/whiny_nil') if configuration.whiny_nils end |
#install_gem_spec_stubs ⇒ Object
If Rails is vendored and RubyGems is available, install stub GemSpecs for Rails, Active Support, Active Record, Action Pack, Action Mailer, and Active Resource. This allows Gem plugins to depend on Rails even when the Gem version of Rails shouldn’t be loaded.
223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 |
# File 'lib/rails-2.3.14/initializer.rb', line 223 def install_gem_spec_stubs unless Rails.respond_to?(:vendor_rails?) abort %{Your config/boot.rb is outdated: Run "rake rails:update".} end if Rails.vendor_rails? begin; require "rubygems"; rescue LoadError; return; end stubs = %w(rails activesupport activerecord actionpack actionmailer activeresource) stubs.reject! { |s| Gem.loaded_specs.key?(s) } stubs.each do |stub| Gem.loaded_specs[stub] = Gem::Specification.new do |s| s.name = stub s.version = Rails::VERSION::STRING s.loaded_from = "" end end end end |
#load_application_classes ⇒ Object
Eager load application classes
416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 |
# File 'lib/rails-2.3.14/initializer.rb', line 416 def load_application_classes return if $rails_rake_task && configuration.dependency_loading if configuration.cache_classes tasks = [] configuration.eager_load_paths.each do |load_path| matcher = /\A#{Regexp.escape(load_path)}(.*)\.rb\Z/ Dir.glob("#{load_path}/**/*.rb").sort.each do |file| f = nil start = Time.now.to_f f = file.sub(matcher, '\1') time = Time.now.to_f - start puts "require #{f}" require_dependency f tasks << [time, f] end end puts "---- Totals ----" tasks.sort.each {|t| puts "#{t[1]}\t#{t[0]}" } end end |
#load_application_initializers ⇒ Object
642 643 644 645 646 647 648 649 650 651 |
# File 'lib/rails-2.3.14/initializer.rb', line 642 def load_application_initializers if gems_dependencies_loaded Dir["#{configuration.root_path}/config/initializers/**/*.rb"].sort.each do |initializer| start = Time.now.to_f load(initializer) time = Time.now.to_f - start puts "#{initializer} #{time}" end end end |
#load_environment ⇒ Object
Loads the environment specified by Configuration#environment_path, which is typically one of development, test, or production.
386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 |
# File 'lib/rails-2.3.14/initializer.rb', line 386 def load_environment silence_warnings do return if @environment_loaded @environment_loaded = true config = configuration constants = self.class.constants eval(IO.read(configuration.environment_path), binding, configuration.environment_path) (self.class.constants - constants).each do |const| Object.const_set(const, self.class.const_get(const)) end end end |
#load_gems ⇒ Object
312 313 314 315 316 317 |
# File 'lib/rails-2.3.14/initializer.rb', line 312 def load_gems unless $gems_rake_task puts @configuration.gems.each {|g| puts g.inspect} @configuration.gems.each { |gem| gem.load } end end |
#load_observers ⇒ Object
402 403 404 405 406 |
# File 'lib/rails-2.3.14/initializer.rb', line 402 def load_observers if gems_dependencies_loaded && configuration.frameworks.include?(:active_record) ActiveRecord::Base.instantiate_observers end end |
#load_plugins ⇒ Object
Loads all plugins in config.plugin_paths
. plugin_paths
defaults to vendor/plugins
but may also be set to a list of paths, such as
config.plugin_paths = ["#{RAILS_ROOT}/lib/plugins", "#{RAILS_ROOT}/vendor/plugins"]
In the default implementation, as each plugin discovered in plugin_paths
is initialized:
-
its
lib
directory, if present, is added to the load path (immediately after the applications lib directory) -
init.rb
is evaluated, if present
After all plugins are loaded, duplicates are removed from the load path. If an array of plugin names is specified in config.plugins, only those plugins will be loaded and they plugins will be loaded in that order. Otherwise, plugins are loaded in alphabetical order.
if config.plugins ends contains :all then the named plugins will be loaded in the given order and all other plugins will be loaded in alphabetical order
376 377 378 |
# File 'lib/rails-2.3.14/initializer.rb', line 376 def load_plugins plugin_loader.load_plugins end |
#load_view_paths ⇒ Object
408 409 410 411 412 413 |
# File 'lib/rails-2.3.14/initializer.rb', line 408 def load_view_paths if configuration.frameworks.include?(:action_view) ActionController::Base.view_paths.load! if configuration.frameworks.include?(:action_controller) ActionMailer::Base.view_paths.load! if configuration.frameworks.include?(:action_mailer) end end |
#plugin_loader ⇒ Object
380 381 382 |
# File 'lib/rails-2.3.14/initializer.rb', line 380 def plugin_loader @plugin_loader ||= configuration.plugin_loader.new(self) end |
#preload_frameworks ⇒ Object
Preload all frameworks specified by the Configuration#frameworks. Used by Passenger to ensure everything’s loaded before forking and to avoid autoload race conditions in JRuby.
283 284 285 286 287 288 289 290 291 |
# File 'lib/rails-2.3.14/initializer.rb', line 283 def preload_frameworks if configuration.preload_frameworks configuration.frameworks.each do |framework| # String#classify and #constantize aren't available yet. toplevel = Object.const_get(framework.to_s.gsub(/(?:^|_)(.)/) { $1.upcase }) toplevel.load_all! if toplevel.respond_to?(:load_all!) end end end |
#prepare_dispatcher ⇒ Object
653 654 655 656 657 658 |
# File 'lib/rails-2.3.14/initializer.rb', line 653 def prepare_dispatcher return unless configuration.frameworks.include?(:action_controller) require 'dispatcher' unless defined?(::Dispatcher) Dispatcher.define_dispatcher_callbacks(configuration.cache_classes) Dispatcher.run_prepare_callbacks end |
#process ⇒ Object
Sequentially step through all of the available initialization routines, in order (view execution order in source).
130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 |
# File 'lib/rails-2.3.14/initializer.rb', line 130 def process Rails.configuration = configuration total_time = 0.0 tasks = [] %w{ 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 add_gem_load_paths load_gems check_gem_dependencies load_application_initializers after_initialize initialize_database_middleware prepare_dispatcher initialize_routing load_observers load_view_paths load_application_classes disable_dependency_loading }.each do |task| start = Time.now.to_f send(task) time = Time.now.to_f - start puts "task: #{task} %.3f" % time tasks << [time, task] total_time += time end puts "---- Done Initializing ----" tasks.sort.each {|t| puts "#{t[1]} #{t[0]}" } puts "Total time: #{total_time}" # Flag initialized Rails.initialized = true end |
#require_frameworks ⇒ Object
Requires all frameworks specified by the Configuration#frameworks list. By default, all frameworks (Active Record, Active Support, Action Pack, Action Mailer, and Active Resource) are loaded.
273 274 275 276 277 278 |
# File 'lib/rails-2.3.14/initializer.rb', line 273 def require_frameworks configuration.frameworks.each { |framework| require(framework.to_s) } rescue LoadError => e # Re-raise as RuntimeError because Mongrel would swallow LoadError. raise e.to_s end |
#set_autoload_paths ⇒ Object
Set the paths from which Rails will automatically load source files, and the load_once paths.
254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 |
# File 'lib/rails-2.3.14/initializer.rb', line 254 def set_autoload_paths ActiveSupport::Dependencies.autoload_paths = configuration.autoload_paths.uniq ActiveSupport::Dependencies.autoload_once_paths = configuration.autoload_once_paths.uniq extra = ActiveSupport::Dependencies.autoload_once_paths - ActiveSupport::Dependencies.autoload_paths unless extra.empty? abort <<-end_error autoload_once_paths must be a subset of the autoload_paths. Extra items in autoload_once_paths: #{extra * ','} end_error end # Freeze the arrays so future modifications will fail rather than do nothing mysteriously configuration.autoload_once_paths.freeze end |
#set_load_path ⇒ Object
Set the $LOAD_PATH
based on the value of Configuration#autoload_paths. Duplicates are removed.
246 247 248 249 250 |
# File 'lib/rails-2.3.14/initializer.rb', line 246 def set_load_path load_paths = configuration.autoload_paths + configuration.framework_paths load_paths.reverse_each { |dir| $LOAD_PATH.unshift(dir) if File.directory?(dir) } $LOAD_PATH.uniq! end |