In Rails 3.0, a Rails::Application object was introduced which is nothing more than an Engine but with the responsibility of coordinating the whole boot process.
Initialization
Rails::Application is responsible for executing all railties, engines and plugin initializers. It also executes some bootstrap initializers (check Rails::Application::Bootstrap) and finishing initializers, after all the others are executed (check Rails::Application::Finisher).
Configuration
Besides providing the same configuration as Rails::Engine and Rails::Railtie, the application object has several specific configurations, for example “allow_concurrency”, “cache_classes”, “consider_all_requests_local”, “filter_parameters”, “logger”, “reload_plugins” and so forth.
Check Rails::Application::Configuration to see them all.
Routes
The application object is also responsible for holding the routes and reloading routes whenever the files change in development.
Middlewares
The Application is also responsible for building the middleware stack.
- MODULE Rails::Application::Bootstrap
- MODULE Rails::Application::Finisher
- CLASS Rails::Application::Configuration
- CLASS Rails::Application::Railties
- CLASS Rails::Application::RoutesReloader
- C
- D
- E
- I
- L
- N
- R
- T
[RW] | assets | |
[RW] | sandbox | |
[RW] | sandbox? |
Source: show
# File railties/lib/rails/application.rb, line 44 def inherited(base) raise "You cannot have more than one Rails::Application" if Rails.application super Rails.application = base.instance Rails.application.add_lib_to_load_path! ActiveSupport.run_load_hooks(:before_configuration, base.instance) end
Source: show
# File railties/lib/rails/application.rb, line 58 def initialize super @initialized = false end
Source: show
# File railties/lib/rails/application.rb, line 133 def config @config ||= Application::Configuration.new(find_root_with_flag("config.ru", Dir.pwd)) end
Source: show
# File railties/lib/rails/application.rb, line 119 def env_config @env_config ||= super.merge({ "action_dispatch.parameter_filter" => config.filter_parameters, "action_dispatch.secret_token" => config.secret_token, "action_dispatch.show_exceptions" => config.action_dispatch.show_exceptions }) end
Source: show
# File railties/lib/rails/application.rb, line 94 def initialize!(group=:default) raise "Application has been already initialized." if @initialized run_initializers(group, self) @initialized = true self end
Source: show
# File railties/lib/rails/application.rb, line 127 def initializers Bootstrap.initializers_for(self) + super + Finisher.initializers_for(self) end
Source: show
# File railties/lib/rails/application.rb, line 113 def load_console(app=self) initialize_console super self end
Source: show
# File railties/lib/rails/application.rb, line 107 def load_generators(app=self) initialize_generators super self end
Source: show
# File railties/lib/rails/application.rb, line 101 def load_tasks(app=self) initialize_tasks super self end
Source: show
# File railties/lib/rails/application.rb, line 86 def reload_routes! routes_reloader.reload! end
Source: show
# File railties/lib/rails/application.rb, line 90 def routes_reloader @routes_reloader ||= RoutesReloader.new end
Source: show
# File railties/lib/rails/application.rb, line 145 def default_middleware_stack ActionDispatch::MiddlewareStack.new.tap do |middleware| if rack_cache = config.action_controller.perform_caching && config.action_dispatch.rack_cache require "action_dispatch/http/rack_cache" middleware.use ::Rack::Cache, rack_cache end if config.force_ssl require "rack/ssl" middleware.use ::Rack::SSL end if config.serve_static_assets middleware.use ::ActionDispatch::Static, paths["public"].first, config.static_cache_control end middleware.use ::Rack::Lock unless config.allow_concurrency middleware.use ::Rack::Runtime middleware.use ::Rack::MethodOverride middleware.use ::Rails::Rack::Logger # must come after Rack::MethodOverride to properly log overridden methods middleware.use ::ActionDispatch::ShowExceptions, config.consider_all_requests_local middleware.use ::ActionDispatch::RemoteIp, config.action_dispatch.ip_spoofing_check, config.action_dispatch.trusted_proxies middleware.use ::Rack::Sendfile, config.action_dispatch.x_sendfile_header middleware.use ::ActionDispatch::Reloader unless config.cache_classes middleware.use ::ActionDispatch::Callbacks middleware.use ::ActionDispatch::Cookies if config.session_store middleware.use config.session_store, config.session_options middleware.use ::ActionDispatch::Flash end middleware.use ::ActionDispatch::ParamsParser middleware.use ::ActionDispatch::Head middleware.use ::Rack::ConditionalGet middleware.use ::Rack::ETag, "no-cache" if config.action_dispatch.best_standards_support middleware.use ::ActionDispatch::BestStandardsSupport, config.action_dispatch.best_standards_support end end end
Source: show
# File railties/lib/rails/application.rb, line 202 def initialize_console require "pp" require "rails/console/app" require "rails/console/helpers" end
Source: show
# File railties/lib/rails/application.rb, line 198 def initialize_generators require "rails/generators" end
Source: show
# File railties/lib/rails/application.rb, line 188 def initialize_tasks self.class.rake_tasks do require "rails/tasks" task :environment do $rails_rake_task = true require_environment! end end end