diff options
Diffstat (limited to 'actionpack')
-rw-r--r-- | actionpack/lib/action_controller/cgi_process.rb | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/actionpack/lib/action_controller/cgi_process.rb b/actionpack/lib/action_controller/cgi_process.rb index 812899b327..c0cbc22edd 100644 --- a/actionpack/lib/action_controller/cgi_process.rb +++ b/actionpack/lib/action_controller/cgi_process.rb @@ -93,7 +93,7 @@ module ActionController #:nodoc: def session unless @session if @session_options == false - @session = Hash.new + @session = disabled_session_hash else stale_session_check! do if session_options_with_string_keys['new_session'] == true @@ -121,13 +121,17 @@ module ActionController #:nodoc: # Delete an old session if it exists then create a new one. def new_session if @session_options == false - Hash.new + disabled_session_hash else CGI::Session.new(@cgi, session_options_with_string_keys.merge("new_session" => false)).delete rescue nil CGI::Session.new(@cgi, session_options_with_string_keys.merge("new_session" => true)) end end + def disabled_session_hash + Hash.new { |h,k| raise "You disabled sessions but are attempting to set session[#{k.inspect}]" } + end + def stale_session_check! yield rescue ArgumentError => argument_error |