aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack/lib/action_controller/session/active_record_store.rb
diff options
context:
space:
mode:
authorJeremy Kemper <jeremy@bitsweat.net>2005-11-20 04:41:59 +0000
committerJeremy Kemper <jeremy@bitsweat.net>2005-11-20 04:41:59 +0000
commitcd8686b45639365ac3af87ddd82254fdc19ec414 (patch)
tree380fd7fd766b8b1cd3c0b17a62e4f3c6b0f9bc4d /actionpack/lib/action_controller/session/active_record_store.rb
parent9b9578fa4799f911edbc01ae5b7d30ee874812a0 (diff)
downloadrails-cd8686b45639365ac3af87ddd82254fdc19ec414.tar.gz
rails-cd8686b45639365ac3af87ddd82254fdc19ec414.tar.bz2
rails-cd8686b45639365ac3af87ddd82254fdc19ec414.zip
r3173@asus: jeremy | 2005-11-18 23:34:41 -0800
Ticket 2731 - sessions r3185@asus: jeremy | 2005-11-19 18:02:51 -0800 eliminate const redefinition warning r3186@asus: jeremy | 2005-11-19 19:25:50 -0800 Use :database option instead of :dbfile r3187@asus: jeremy | 2005-11-19 19:34:31 -0800 Data writer assigns to instance var. Since nothing is calling write_attribute on the data column except for marshal_data, simplify data reader to lazy-unmarshal the data column (no worrying whether it's already unmarshaled) r3188@asus: jeremy | 2005-11-19 19:35:40 -0800 Explicitly create the session class so that subsequent requests for the session can find it in the database. This is masking a problem with the controller losing its @session instance var and therefore requesting a new session. r3189@asus: jeremy | 2005-11-19 19:36:40 -0800 Using create unnecessarily broadens the existing duck-typing so use new + save instead. r3194@asus: jeremy | 2005-11-19 20:28:17 -0800 Test creation of another instance while first instance is still active. Should return same session_id. r3195@asus: jeremy | 2005-11-19 20:39:45 -0800 Always create new AR sessions rather than trying too hard to avoid database traffic. References #2731. git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@3100 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
Diffstat (limited to 'actionpack/lib/action_controller/session/active_record_store.rb')
-rw-r--r--actionpack/lib/action_controller/session/active_record_store.rb13
1 files changed, 4 insertions, 9 deletions
diff --git a/actionpack/lib/action_controller/session/active_record_store.rb b/actionpack/lib/action_controller/session/active_record_store.rb
index 4a6b05c917..c247bd4785 100644
--- a/actionpack/lib/action_controller/session/active_record_store.rb
+++ b/actionpack/lib/action_controller/session/active_record_store.rb
@@ -117,17 +117,11 @@ class CGI
end
end
+ attr_writer :data
+
# Lazy-unmarshal session state.
def data
- unless @data
- case d = read_attribute(@@data_column_name)
- when String
- @data = self.class.unmarshal(d)
- else
- @data = d || {}
- end
- end
- @data
+ @data ||= self.class.unmarshal(read_attribute(@@data_column_name))
end
private
@@ -284,6 +278,7 @@ class CGI
raise CGI::Session::NoSession, 'uninitialized session'
end
@session = @@session_class.new(:session_id => session_id, :data => {})
+ @session.save
end
end