aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--actionpack/lib/action_controller/metal/compatibility.rb3
-rw-r--r--actionpack/lib/action_controller/metal/session_management.rb22
-rw-r--r--actionpack/lib/action_controller/railtie.rb3
-rw-r--r--railties/lib/rails/configuration.rb2
-rw-r--r--railties/test/application/metal_test.rb4
-rw-r--r--railties/test/application/middleware_test.rb1
-rw-r--r--railties/test/railties/shared_tests.rb2
7 files changed, 24 insertions, 13 deletions
diff --git a/actionpack/lib/action_controller/metal/compatibility.rb b/actionpack/lib/action_controller/metal/compatibility.rb
index 9471f36de3..4c2136de8a 100644
--- a/actionpack/lib/action_controller/metal/compatibility.rb
+++ b/actionpack/lib/action_controller/metal/compatibility.rb
@@ -91,6 +91,9 @@ module ActionController
deprecated_config_writer :session_store
deprecated_config_writer :session_options
deprecated_config_accessor :relative_url_root, "relative_url_root is ineffective. Please stop using it"
+ deprecated_config_accessor :assets_dir
+ deprecated_config_accessor :javascripts_dir
+ deprecated_config_accessor :stylesheets_dir
# For old tests
def initialize_template_class(*) end
diff --git a/actionpack/lib/action_controller/metal/session_management.rb b/actionpack/lib/action_controller/metal/session_management.rb
index 09ef9261a4..ce8b20964b 100644
--- a/actionpack/lib/action_controller/metal/session_management.rb
+++ b/actionpack/lib/action_controller/metal/session_management.rb
@@ -3,24 +3,28 @@ module ActionController #:nodoc:
extend ActiveSupport::Concern
included do
- self.config.session_store ||= :cookie_store
+ # This is still needed for the session secret for some reason.
self.config.session_options ||= {}
end
+ def self.session_store_for(store)
+ case store
+ when :active_record_store
+ ActiveRecord::SessionStore
+ when Symbol
+ ActionDispatch::Session.const_get(store.to_s.camelize)
+ else
+ store
+ end
+ end
+
module ClassMethods
def session_options
config.session_options
end
def session_store
- case store = config.session_store
- when :active_record_store
- ActiveRecord::SessionStore
- when Symbol
- ActionDispatch::Session.const_get(store.to_s.camelize)
- else
- store
- end
+ SessionManagement.session_store_for(config.session_store)
end
def session=(options = {})
diff --git a/actionpack/lib/action_controller/railtie.rb b/actionpack/lib/action_controller/railtie.rb
index f4c51ba760..3a084cdf67 100644
--- a/actionpack/lib/action_controller/railtie.rb
+++ b/actionpack/lib/action_controller/railtie.rb
@@ -13,6 +13,9 @@ module ActionController
log_subscriber ActionController::Railties::LogSubscriber.new
+ config.action_controller.session_store = :cookie_store
+ config.action_controller.session_options = {}
+
initializer "action_controller.logger" do
ActionController::Base.logger ||= Rails.logger
end
diff --git a/railties/lib/rails/configuration.rb b/railties/lib/rails/configuration.rb
index a26978ef92..a78e115fe1 100644
--- a/railties/lib/rails/configuration.rb
+++ b/railties/lib/rails/configuration.rb
@@ -88,7 +88,7 @@ module Rails
middleware.use('::Rack::Sendfile', lambda { action_dispatch.x_sendfile_header })
middleware.use('::ActionDispatch::Callbacks', lambda { !cache_classes })
middleware.use('::ActionDispatch::Cookies')
- middleware.use(lambda { action_controller.session_store }, lambda { action_controller.session_options })
+ middleware.use(lambda { ActionController::SessionManagement.session_store_for(action_controller.session_store) }, lambda { action_controller.session })
middleware.use('::ActionDispatch::Flash', :if => lambda { action_controller.session_store })
middleware.use(lambda { metal_loader.build_middleware(metals) }, :if => lambda { metal_loader.metals.any? })
middleware.use('ActionDispatch::ParamsParser')
diff --git a/railties/test/application/metal_test.rb b/railties/test/application/metal_test.rb
index 225bede117..1ec62282c8 100644
--- a/railties/test/application/metal_test.rb
+++ b/railties/test/application/metal_test.rb
@@ -28,7 +28,7 @@ module ApplicationTests
end
RUBY
- get "/"
+ get "/not/slash"
assert_equal 200, last_response.status
assert_equal "FooMetal", last_response.body
end
@@ -50,7 +50,7 @@ module ApplicationTests
end
RUBY
- get "/"
+ get "/not/slash"
assert_equal 200, last_response.status
assert_equal "Metal B", last_response.body
end
diff --git a/railties/test/application/middleware_test.rb b/railties/test/application/middleware_test.rb
index 5e869bff1e..9a359d20b1 100644
--- a/railties/test/application/middleware_test.rb
+++ b/railties/test/application/middleware_test.rb
@@ -19,6 +19,7 @@ module ApplicationTests
"Rack::Runtime",
"Rails::Rack::Logger",
"ActionDispatch::ShowExceptions",
+ "ActionDispatch::RemoteIp",
"Rack::Sendfile",
"ActionDispatch::Callbacks",
"ActionDispatch::Cookies",
diff --git a/railties/test/railties/shared_tests.rb b/railties/test/railties/shared_tests.rb
index 151abe21f8..0ebc8a2d3f 100644
--- a/railties/test/railties/shared_tests.rb
+++ b/railties/test/railties/shared_tests.rb
@@ -254,7 +254,7 @@ YAML
require 'rack/test'
extend Rack::Test::Methods
- get "/"
+ get "/not/slash"
assert_equal 200, last_response.status
assert_equal "FooMetal", last_response.body
end