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)
Methods
Attributes
[RW] action_controller A stub for setting options on ActionController::Base.
[RW] action_mailer A stub for setting options on ActionMailer::Base.
[RW] action_view A stub for setting options on ActionView::Base.
[RW] active_record A stub for setting options on ActiveRecord::Base.
[RW] active_resource A stub for setting options on ActiveRecord::Base.
[RW] active_support A stub for setting options on ActiveSupport.
[RW] cache_classes Whether or not classes should be cached (set to false if you want application classes to be reloaded on each request)
[RW] cache_store The specific cache store to use. By default, the ActiveSupport::Cache::Store will be used.
[RW] controller_paths The list of paths that should be searched for controllers. (Defaults to app/controllers and components.)
[RW] database_configuration_file The path to the database configuration file to use. (Defaults to config/database.yml.)
[RW] frameworks The list of rails framework components that should be loaded. (Defaults to :active_record, :action_controller, :action_view, :action_mailer, and :active_resource).
[RW] gems An array of gems that this rails application depends on. Rails will automatically load these gems during installation, and allow you to install any missing gems with:
  rake gems:install

You can add gems with the gem method.

[RW] load_once_paths An array of paths from which Rails will automatically load from only once. All elements of this array must also be in load_paths.
[RW] load_paths 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.
[RW] log_level The log level to use for the default Rails logger. In production mode, this defaults to :info. In development mode, it defaults to :debug.
[RW] log_path The path to the log file to use. Defaults to log/#{environment}.log (e.g. log/development.log or log/production.log).
[RW] logger 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.
[RW] plugin_loader The class that handles loading each plugin. Defaults to Rails::Plugin::Loader, but a sub class would have access to fine grained modification of the loading behavior. See the implementation of Rails::Plugin::Loader for more details.
[RW] plugin_locators The classes that handle finding the desired plugins that you‘d like to load for your application. By default it is the Rails::Plugin::FileSystemLocator which finds plugins to load in vendor/plugins. You can hook into gem location by subclassing Rails::Plugin::Locator and adding it onto the list of plugin_locators.
[RW] plugin_paths The path to the root of the plugins directory. By default, it is in vendor/plugins.
[R] plugins 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.
[RW] reload_plugins Enables or disables plugin reloading. You can get around this setting per plugin. If reload_plugins? is false, add this to your plugin‘s init.rb to make it reloadable:
  ActiveSupport::Dependencies.load_once_paths.delete lib_path

If reload_plugins? is true, add this to your plugin‘s init.rb to only load it once:

  ActiveSupport::Dependencies.load_once_paths << lib_path
[R] root_path The application‘s base directory.
[RW] routes_configuration_file The path to the routes configuration file to use. (Defaults to config/routes.rb.)
[RW] time_zone Sets the default time_zone. Setting this will enable time_zone awareness for Active Record models and set the Active Record default timezone to :utc.
[RW] view_path The root of the application‘s views. (Defaults to app/views.)
[RW] whiny_nils 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.
Public Class methods
new()

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

     # File vendor/rails/railties/lib/initializer.rb, line 667
667:     def initialize
668:       set_root_path!
669: 
670:       self.frameworks                   = default_frameworks
671:       self.load_paths                   = default_load_paths
672:       self.load_once_paths              = default_load_once_paths
673:       self.log_path                     = default_log_path
674:       self.log_level                    = default_log_level
675:       self.view_path                    = default_view_path
676:       self.controller_paths             = default_controller_paths
677:       self.cache_classes                = default_cache_classes
678:       self.whiny_nils                   = default_whiny_nils
679:       self.plugins                      = default_plugins
680:       self.plugin_paths                 = default_plugin_paths
681:       self.plugin_locators              = default_plugin_locators
682:       self.plugin_loader                = default_plugin_loader
683:       self.database_configuration_file  = default_database_configuration_file
684:       self.routes_configuration_file    = default_routes_configuration_file
685:       self.gems                         = default_gems
686: 
687:       for framework in default_frameworks
688:         self.send("#{framework}=", Rails::OrderedOptions.new)
689:       end
690:       self.active_support = Rails::OrderedOptions.new
691:     end
Public Instance methods
after_initialize(&after_initialize_block)

Adds 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.

     # File vendor/rails/railties/lib/initializer.rb, line 736
736:     def after_initialize(&after_initialize_block)
737:       after_initialize_blocks << after_initialize_block if after_initialize_block
738:     end
after_initialize_blocks()

Returns the blocks added with Configuration#after_initialize

     # File vendor/rails/railties/lib/initializer.rb, line 741
741:     def after_initialize_blocks
742:       @after_initialize_blocks ||= []
743:     end
breakpoint_server(_ = nil)

Deprecated options:

This method is also aliased as breakpoint_server=
     # File vendor/rails/railties/lib/initializer.rb, line 651
651:     def breakpoint_server(_ = nil)
652:       $stderr.puts %(
653:       *******************************************************************
654:       * config.breakpoint_server has been deprecated and has no effect. *
655:       *******************************************************************
656:       )
657:     end
breakpoint_server=(_ = nil)

Alias for breakpoint_server

builtin_directories()
     # File vendor/rails/railties/lib/initializer.rb, line 756
756:     def builtin_directories
757:       # Include builtins only in the development environment.
758:       (environment == 'development') ? Dir["#{RAILTIES_PATH}/builtin/*/"] : []
759:     end
database_configuration()

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.

     # File vendor/rails/railties/lib/initializer.rb, line 716
716:     def database_configuration
717:       require 'erb'
718:       YAML::load(ERB.new(IO.read(database_configuration_file)).result)
719:     end
environment()

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

     # File vendor/rails/railties/lib/initializer.rb, line 729
729:     def environment
730:       ::RAILS_ENV
731:     end
environment_path()

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

     # File vendor/rails/railties/lib/initializer.rb, line 723
723:     def environment_path
724:       "#{root_path}/config/environments/#{environment}.rb"
725:     end
framework_paths()
     # File vendor/rails/railties/lib/initializer.rb, line 761
761:     def framework_paths
762:       paths = %w(railties railties/lib activesupport/lib)
763:       paths << 'actionpack/lib' if frameworks.include? :action_controller or frameworks.include? :action_view
764:       
765:       [:active_record, :action_mailer, :active_resource, :action_web_service].each do |framework|
766:         paths << "#{framework.to_s.gsub('_', '')}/lib" if frameworks.include? framework
767:       end
768:       
769:       paths.map { |dir| "#{framework_root_path}/#{dir}" }.select { |dir| File.directory?(dir) }
770:     end
gem(name, options = {})

Adds a single Gem dependency to the rails application. By default, it will require the library with the same name as the gem. Use :lib to specify a different name.

  # gem 'aws-s3', '>= 0.4.0'
  # require 'aws/s3'
  config.gem 'aws-s3', :lib => 'aws/s3', :version => '>= 0.4.0',      #     :source => "http://code.whytheluckystiff.net"

To require a library be installed, but not attempt to load it, pass :lib => false

  config.gem 'qrp', :version => '0.4.1', :lib => false
     # File vendor/rails/railties/lib/initializer.rb, line 646
646:     def gem(name, options = {})
647:       @gems << Rails::GemDependency.new(name, options)
648:     end
plugins=(plugins)
     # File vendor/rails/railties/lib/initializer.rb, line 590
590:     def plugins=(plugins)
591:       @plugins = plugins.nil? ? nil : plugins.map { |p| p.to_sym }
592:     end
reload_plugins?()

Returns true if plugin reloading is enabled.

     # File vendor/rails/railties/lib/initializer.rb, line 623
623:     def reload_plugins?
624:       !!@reload_plugins
625:     end
set_root_path!()

Set the root_path to RAILS_ROOT and canonicalize it.

     # File vendor/rails/railties/lib/initializer.rb, line 694
694:     def set_root_path!
695:       raise 'RAILS_ROOT is not set' unless defined?(::RAILS_ROOT)
696:       raise 'RAILS_ROOT is not a directory' unless File.directory?(::RAILS_ROOT)
697: 
698:       @root_path =
699:         # Pathname is incompatible with Windows, but Windows doesn't have
700:         # real symlinks so File.expand_path is safe.
701:         if RUBY_PLATFORM =~ /(:?mswin|mingw)/
702:           File.expand_path(::RAILS_ROOT)
703: 
704:         # Otherwise use Pathname#realpath which respects symlinks.
705:         else
706:           Pathname.new(::RAILS_ROOT).realpath.to_s
707:         end
708:       
709:       Object.const_set(:RELATIVE_RAILS_ROOT, ::RAILS_ROOT.dup) unless defined?(::RELATIVE_RAILS_ROOT)
710:       ::RAILS_ROOT.replace @root_path
711:     end
to_prepare(&callback)

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

See Dispatcher#to_prepare.

     # File vendor/rails/railties/lib/initializer.rb, line 749
749:     def to_prepare(&callback)
750:       after_initialize do 
751:         require 'dispatcher' unless defined?(::Dispatcher)
752:         Dispatcher.to_prepare(&callback)
753:       end
754:     end