diff options
author | Jeremy Kemper <jeremy@bitsweat.net> | 2005-07-05 02:29:42 +0000 |
---|---|---|
committer | Jeremy Kemper <jeremy@bitsweat.net> | 2005-07-05 02:29:42 +0000 |
commit | d80d9a52bdc8b6ddf3b1ec846ddafd96d4ab3e8c (patch) | |
tree | faa25a79909ecc96ee3ea64ca1e542b327d43329 /actionpack/lib/action_controller/session | |
parent | ed12b0cac0bda6cda7a7c3c9a5c741fe1bebcc08 (diff) | |
download | rails-d80d9a52bdc8b6ddf3b1ec846ddafd96d4ab3e8c.tar.gz rails-d80d9a52bdc8b6ddf3b1ec846ddafd96d4ab3e8c.tar.bz2 rails-d80d9a52bdc8b6ddf3b1ec846ddafd96d4ab3e8c.zip |
r2837@asus: jeremy | 2005-07-05 00:34:31 -0700
Don't restrict sessid compat. check to a single run. Reset cached column info before checking in case it's stale (may happen if you change table_name). Make the test a private class method.
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@1693 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
Diffstat (limited to 'actionpack/lib/action_controller/session')
-rw-r--r-- | actionpack/lib/action_controller/session/active_record_store.rb | 39 |
1 files changed, 19 insertions, 20 deletions
diff --git a/actionpack/lib/action_controller/session/active_record_store.rb b/actionpack/lib/action_controller/session/active_record_store.rb index d539fd2a95..4700f2419a 100644 --- a/actionpack/lib/action_controller/session/active_record_store.rb +++ b/actionpack/lib/action_controller/session/active_record_store.rb @@ -46,26 +46,6 @@ class CGI find_by_session_id(session_id) end - # Compatibility with tables using sessid instead of session_id. - def setup_sessid_compatibility! - if !@sessid_compatibility_checked - if columns_hash['sessid'] - def self.find_by_session_id(*args) - find_by_sessid(*args) - end - - alias_method :session_id, :sessid - define_method(:session_id) { sessid } - define_method(:session_id=) { |session_id| self.sessid = session_id } - else - def self.find_by_session_id(session_id) - find :first, :conditions => ["session_id #{attribute_condition(session_id)}", session_id] - end - end - @sessid_compatibility_checked = true - end - end - def marshal(data) Base64.encode64(Marshal.dump(data)) end def unmarshal(data) Marshal.load(Base64.decode64(data)) end def fingerprint(data) Digest::MD5.hexdigest(data) end @@ -83,6 +63,25 @@ class CGI def drop_table! connection.execute "DROP TABLE #{table_name}" end + + private + # Compatibility with tables using sessid instead of session_id. + def setup_sessid_compatibility! + # Reset column info since it may be stale. + reset_column_information + if columns_hash['sessid'] + def self.find_by_session_id(*args) + find_by_sessid(*args) + end + + define_method(:session_id) { sessid } + define_method(:session_id=) { |session_id| self.sessid = session_id } + else + def self.find_by_session_id(session_id) + find :first, :conditions => ["session_id #{attribute_condition(session_id)}", session_id] + end + end + end end # Lazy-unmarshal session state. Take a fingerprint so we can detect |