From 43ac42c46a462e1453b1b97da00e11bff7bba55d Mon Sep 17 00:00:00 2001 From: Joshua Peek Date: Mon, 15 Dec 2008 19:25:31 -0600 Subject: Clear empty nil values in session hash before saving --- .../action_controller/session/abstract_store.rb | 4 +++- .../lib/action_controller/session/cookie_store.rb | 25 +++------------------- 2 files changed, 6 insertions(+), 23 deletions(-) (limited to 'actionpack/lib/action_controller/session') diff --git a/actionpack/lib/action_controller/session/abstract_store.rb b/actionpack/lib/action_controller/session/abstract_store.rb index b23bf062c4..c6dd865fad 100644 --- a/actionpack/lib/action_controller/session/abstract_store.rb +++ b/actionpack/lib/action_controller/session/abstract_store.rb @@ -32,7 +32,9 @@ module ActionController end def to_hash - {}.replace(self) + h = {}.replace(self) + h.delete_if { |k,v| v.nil? } + h end private diff --git a/actionpack/lib/action_controller/session/cookie_store.rb b/actionpack/lib/action_controller/session/cookie_store.rb index f13c9290c0..f4089bfa8b 100644 --- a/actionpack/lib/action_controller/session/cookie_store.rb +++ b/actionpack/lib/action_controller/session/cookie_store.rb @@ -74,30 +74,11 @@ module ActionController freeze end - class SessionHash < Hash - def initialize(middleware, env) - @middleware = middleware - @env = env - @loaded = false - end - - def [](key) - load! unless @loaded - super - end - - def []=(key, value) - load! unless @loaded - super - end - - def to_hash - {}.replace(self) - end - + class SessionHash < AbstractStore::SessionHash private def load! - replace(@middleware.send(:load_session, @env)) + session = @by.send(:load_session, @env) + replace(session) @loaded = true end end -- cgit v1.2.3