aboutsummaryrefslogtreecommitdiffstats
path: root/railties/lib/rails/application/configuration.rb
diff options
context:
space:
mode:
authorJosé Valim <jose.valim@gmail.com>2010-03-26 18:47:55 +0100
committerJosé Valim <jose.valim@gmail.com>2010-03-26 18:47:55 +0100
commit395d6648ce7549f71dd0a76dc061e87f608aaaab (patch)
tree4dbb6eb54ff784143bf6e2f671057f0b8162dba5 /railties/lib/rails/application/configuration.rb
parentfc266d7ec2cf1d3f9daf585ea6b79b61467a175f (diff)
downloadrails-395d6648ce7549f71dd0a76dc061e87f608aaaab.tar.gz
rails-395d6648ce7549f71dd0a76dc061e87f608aaaab.tar.bz2
rails-395d6648ce7549f71dd0a76dc061e87f608aaaab.zip
Move application configuration to the application configuration object, remove railtie_name and engine_name and allow to set the configuration object.
Diffstat (limited to 'railties/lib/rails/application/configuration.rb')
-rw-r--r--railties/lib/rails/application/configuration.rb55
1 files changed, 53 insertions, 2 deletions
diff --git a/railties/lib/rails/application/configuration.rb b/railties/lib/rails/application/configuration.rb
index 52f869b877..44635ff4f6 100644
--- a/railties/lib/rails/application/configuration.rb
+++ b/railties/lib/rails/application/configuration.rb
@@ -6,7 +6,7 @@ module Rails
include ::Rails::Configuration::Deprecated
attr_accessor :allow_concurrency, :cache_classes, :cache_store,
- :consider_all_requests_local, :dependency_loading,
+ :cookie_secret, :consider_all_requests_local, :dependency_loading,
:filter_parameters, :log_level, :logger, :metals,
:plugins, :preload_frameworks, :reload_engines, :reload_plugins,
:serve_static_assets, :time_zone, :whiny_nils
@@ -19,10 +19,16 @@ module Rails
@serve_static_assets = true
@time_zone = "UTC"
@consider_all_requests_local = true
+ @session_store = :cookie_store
+ @session_options = {}
end
def middleware
- @@default_middleware_stack ||= default_middleware
+ @middleware ||= default_middleware_stack
+ end
+
+ def metal_loader
+ @metal_loader ||= Rails::Application::MetalLoader.new
end
def paths
@@ -94,6 +100,51 @@ module Rails
Rails::LogSubscriber.colorize_logging = val
self.generators.colorize_logging = val
end
+
+ def session_store(*args)
+ if args.empty?
+ case @session_store
+ when :disabled
+ nil
+ when :active_record_store
+ ActiveRecord::SessionStore
+ when Symbol
+ ActionDispatch::Session.const_get(@session_store.to_s.camelize)
+ else
+ @session_store
+ end
+ else
+ @session_store = args.shift
+ @session_options = args.shift || {}
+ end
+ end
+
+ protected
+
+ def session_options
+ return @session_options unless @session_store == :cookie_store
+ @session_options.merge(:secret => @cookie_secret)
+ end
+
+ def default_middleware_stack
+ ActionDispatch::MiddlewareStack.new.tap do |middleware|
+ middleware.use('::ActionDispatch::Static', lambda { Rails.public_path }, :if => lambda { serve_static_assets })
+ middleware.use('::Rack::Lock', :if => lambda { !allow_concurrency })
+ middleware.use('::Rack::Runtime')
+ middleware.use('::Rails::Rack::Logger')
+ middleware.use('::ActionDispatch::ShowExceptions', lambda { consider_all_requests_local })
+ middleware.use("::ActionDispatch::RemoteIp", lambda { action_dispatch.ip_spoofing_check }, lambda { action_dispatch.trusted_proxies })
+ middleware.use('::Rack::Sendfile', lambda { action_dispatch.x_sendfile_header })
+ middleware.use('::ActionDispatch::Callbacks', lambda { !cache_classes })
+ middleware.use('::ActionDispatch::Cookies')
+ middleware.use(lambda { session_store }, lambda { session_options })
+ middleware.use('::ActionDispatch::Flash', :if => lambda { session_store })
+ middleware.use(lambda { metal_loader.build_middleware(metals) }, :if => lambda { metal_loader.metals.any? })
+ middleware.use('ActionDispatch::ParamsParser')
+ middleware.use('::Rack::MethodOverride')
+ middleware.use('::ActionDispatch::Head')
+ end
+ end
end
end
end