Class: Rails::Configuration

Inherits:
Object show all
Defined in:
lib/initializer.rb

Overview

The Configuration class holds all the parameters for the Initializer and ships with defaults that suites most Rails applications. But it’s possible to overwrite everything. Usually, you’ll create an Configuration file implicitly through the block running on the Initializer, but it’s also possible to create the Configuration instance in advance and pass it in like this:

config = Rails::Configuration.new
Rails::Initializer.run(:process, config)

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeConfiguration

Create a new Configuration instance, initialized with the default values.



508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
# File 'lib/initializer.rb', line 508

def initialize
  set_root_path!

  self.frameworks                   = default_frameworks
  self.load_paths                   = default_load_paths
  self.load_once_paths              = default_load_once_paths
  self.log_path                     = default_log_path
  self.log_level                    = default_log_level
  self.view_path                    = default_view_path
  self.controller_paths             = default_controller_paths
  self.cache_classes                = default_cache_classes
  self.breakpoint_server            = default_breakpoint_server
  self.whiny_nils                   = default_whiny_nils
  self.plugins                      = default_plugins
  self.plugin_paths                 = default_plugin_paths
  self.database_configuration_file  = default_database_configuration_file

  for framework in default_frameworks
    self.send("#{framework}=", Rails::OrderedOptions.new)
  end
end

Instance Attribute Details

#action_controllerObject

A stub for setting options on ActionController::Base



427
428
429
# File 'lib/initializer.rb', line 427

def action_controller
  @action_controller
end

#action_mailerObject

A stub for setting options on ActionMailer::Base



430
431
432
# File 'lib/initializer.rb', line 430

def action_mailer
  @action_mailer
end

#action_viewObject

A stub for setting options on ActionView::Base



433
434
435
# File 'lib/initializer.rb', line 433

def action_view
  @action_view
end

#action_web_serviceObject

A stub for setting options on ActionWebService::Base



436
437
438
# File 'lib/initializer.rb', line 436

def action_web_service
  @action_web_service
end

#active_recordObject

A stub for setting options on ActiveRecord::Base



439
440
441
# File 'lib/initializer.rb', line 439

def active_record
  @active_record
end

#breakpoint_serverObject

Whether or not to use the breakpoint server (boolean)



442
443
444
# File 'lib/initializer.rb', line 442

def breakpoint_server
  @breakpoint_server
end

#cache_classesObject

Whether or not classes should be cached (set to false if you want application classes to be reloaded on each request)



446
447
448
# File 'lib/initializer.rb', line 446

def cache_classes
  @cache_classes
end

#connection_adaptersObject

The list of connection adapters to load. (By default, all connection adapters are loaded. You can set this to be just the adapter(s) you will use to reduce your application’s load time.)



451
452
453
# File 'lib/initializer.rb', line 451

def connection_adapters
  @connection_adapters
end

#controller_pathsObject

The list of paths that should be searched for controllers. (Defaults to app/controllers and components.)



455
456
457
# File 'lib/initializer.rb', line 455

def controller_paths
  @controller_paths
end

#database_configuration_fileObject

The path to the database configuration file to use. (Defaults to config/database.yml.)



459
460
461
# File 'lib/initializer.rb', line 459

def database_configuration_file
  @database_configuration_file
end

#frameworksObject

The list of rails framework components that should be loaded. (Defaults to :active_record, :action_controller, :action_view, :action_mailer, and :action_web_service).



465
466
467
# File 'lib/initializer.rb', line 465

def frameworks
  @frameworks
end

#load_once_pathsObject

An array of paths from which Rails will automatically load from only once. All elements of this array must also be in load_paths.



473
474
475
# File 'lib/initializer.rb', line 473

def load_once_paths
  @load_once_paths
end

#load_pathsObject

An array of additional paths to prepend to the load path. By default, all app, lib, vendor and mock paths are included in this list.



469
470
471
# File 'lib/initializer.rb', line 469

def load_paths
  @load_paths
end

#log_levelObject

The log level to use for the default Rails logger. In production mode, this defaults to :info. In development mode, it defaults to :debug.



478
479
480
# File 'lib/initializer.rb', line 478

def log_level
  @log_level
end

#log_pathObject

The path to the log file to use. Defaults to log/##environment.log (e.g. log/development.log or log/production.log).



482
483
484
# File 'lib/initializer.rb', line 482

def log_path
  @log_path
end

#loggerObject

The specific logger to use. By default, a logger will be created and initialized using #log_path and #log_level, but a programmer may specifically set the logger to use via this accessor and it will be used directly.



488
489
490
# File 'lib/initializer.rb', line 488

def logger
  @logger
end

#plugin_pathsObject

The path to the root of the plugins directory. By default, it is in vendor/plugins.



504
505
506
# File 'lib/initializer.rb', line 504

def plugin_paths
  @plugin_paths
end

#pluginsObject

The list of plugins to load. If this is set to nil, all plugins will be loaded. If this is set to [], no plugins will be loaded. Otherwise, plugins will be loaded in the order specified.



500
501
502
# File 'lib/initializer.rb', line 500

def plugins
  @plugins
end

#root_pathObject (readonly)

The application’s base directory.



424
425
426
# File 'lib/initializer.rb', line 424

def root_path
  @root_path
end

#view_pathObject

The root of the application’s views. (Defaults to app/views.)



491
492
493
# File 'lib/initializer.rb', line 491

def view_path
  @view_path
end

#whiny_nilsObject

Set to true if you want to be warned (noisily) when you try to invoke any method of nil. Set to false for the standard Ruby behavior.



495
496
497
# File 'lib/initializer.rb', line 495

def whiny_nils
  @whiny_nils
end

Instance Method Details

#after_initialize(&after_initialize_block) ⇒ Object

Sets a block which will be executed after rails has been fully initialized. Useful for per-environment configuration which depends on the framework being fully initialized.



569
570
571
# File 'lib/initializer.rb', line 569

def after_initialize(&after_initialize_block)
  @after_initialize_block = after_initialize_block
end

#after_initialize_blockObject

Returns the block set in Configuration#after_initialize



574
575
576
# File 'lib/initializer.rb', line 574

def after_initialize_block
  @after_initialize_block
end

#builtin_directoriesObject



587
588
589
590
# File 'lib/initializer.rb', line 587

def builtin_directories
  # Include builtins only in the development environment.
  (environment == 'development') ? Dir["#{RAILTIES_PATH}/builtin/*/"] : []
end

#database_configurationObject

Loads and returns the contents of the #database_configuration_file. The contents of the file are processed via ERB before being sent through YAML::load.



550
551
552
# File 'lib/initializer.rb', line 550

def database_configuration
  YAML::load(ERB.new(IO.read(database_configuration_file)).result)
end

#environmentObject

Return the currently selected environment. By default, it returns the value of the RAILS_ENV constant.



562
563
564
# File 'lib/initializer.rb', line 562

def environment
  ::RAILS_ENV
end

#environment_pathObject

The path to the current environment’s file (development.rb, etc.). By default the file is at config/environments/#{environment}.rb.



556
557
558
# File 'lib/initializer.rb', line 556

def environment_path
  "#{root_path}/config/environments/#{environment}.rb"
end

#framework_pathsObject



592
593
594
595
596
597
598
599
600
601
602
603
# File 'lib/initializer.rb', line 592

def framework_paths
  # TODO: Don't include dirs for frameworks that are not used
  %w(
    railties
    railties/lib
    actionpack/lib
    activesupport/lib
    activerecord/lib
    actionmailer/lib
    actionwebservice/lib
  ).map { |dir| "#{framework_root_path}/#{dir}" }.select { |dir| File.directory?(dir) }
end

#set_root_path!Object

Set the root_path to RAILS_ROOT and canonicalize it.



531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
# File 'lib/initializer.rb', line 531

def set_root_path!
  raise 'RAILS_ROOT is not set' unless defined?(::RAILS_ROOT)
  raise 'RAILS_ROOT is not a directory' unless File.directory?(::RAILS_ROOT)

  @root_path =
    # Pathname is incompatible with Windows, but Windows doesn't have
    # real symlinks so File.expand_path is safe.
    if RUBY_PLATFORM =~ /(:?mswin|mingw)/
      File.expand_path(::RAILS_ROOT)

    # Otherwise use Pathname#realpath which respects symlinks.
    else
      Pathname.new(::RAILS_ROOT).realpath.to_s
    end
end

#to_prepare(&callback) ⇒ Object

Add a preparation callback that will run before every request in development mode, or before the first request in production.

See Dispatcher#to_prepare.



582
583
584
585
# File 'lib/initializer.rb', line 582

def to_prepare(&callback)
  require 'dispatcher' unless defined?(::Dispatcher)
  Dispatcher.to_prepare(&callback)
end