diff options
author | Johan Sörensen <johan@johansorensen.com> | 2009-05-28 09:35:17 -0500 |
---|---|---|
committer | Joshua Peek <josh@joshpeek.com> | 2009-05-28 09:35:17 -0500 |
commit | dd98280e38d640f5724887cf8a715b79f0439d2d (patch) | |
tree | c51dfb5b8053bbc9fa3da90c9c6284a0969e6307 /actionpack/lib/action_dispatch | |
parent | 72cb6f58be6590ac2590eea420a1b3ef175189b3 (diff) | |
download | rails-dd98280e38d640f5724887cf8a715b79f0439d2d.tar.gz rails-dd98280e38d640f5724887cf8a715b79f0439d2d.tar.bz2 rails-dd98280e38d640f5724887cf8a715b79f0439d2d.zip |
Only save the session if we're actually writing to it [#2703 state:resolved]
Signed-off-by: Joshua Peek <josh@joshpeek.com>
Diffstat (limited to 'actionpack/lib/action_dispatch')
-rw-r--r-- | actionpack/lib/action_dispatch/middleware/session/abstract_store.rb | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/actionpack/lib/action_dispatch/middleware/session/abstract_store.rb b/actionpack/lib/action_dispatch/middleware/session/abstract_store.rb index 03761b10bd..6d109f4624 100644 --- a/actionpack/lib/action_dispatch/middleware/session/abstract_store.rb +++ b/actionpack/lib/action_dispatch/middleware/session/abstract_store.rb @@ -15,6 +15,7 @@ module ActionDispatch @by = by @env = env @loaded = false + @updated = false end def session_id @@ -32,6 +33,7 @@ module ActionDispatch def []=(key, value) load! unless @loaded super(key.to_s, value) + @updated = true end def to_hash @@ -79,6 +81,10 @@ module ActionDispatch @loaded end + def updated? + @updated + end + def load! stale_session_check! do id, session = @by.send(:load_session, @env) @@ -147,7 +153,10 @@ module ActionDispatch options = env[ENV_SESSION_OPTIONS_KEY] if !session_data.is_a?(AbstractStore::SessionHash) || session_data.send(:loaded?) || options[:expire_after] - session_data.send(:load!) if session_data.is_a?(AbstractStore::SessionHash) && !session_data.send(:loaded?) + if session_data.is_a?(AbstractStore::SessionHash) + session_data.send(:load!) if !session_data.send(:loaded?) + return response if !session_data.send(:updated?) + end sid = options[:id] || generate_sid |