Class: CGI::Session::ActiveRecordStore::Session
- Inherits:
-
ActiveRecord::Base
- Object
- ActiveRecord::Base
- CGI::Session::ActiveRecordStore::Session
- Defined in:
- lib/action_controller/session/active_record_store.rb
Overview
The default Active Record class.
Class Method Summary collapse
- .create_table! ⇒ Object
- .drop_table! ⇒ Object
-
.find_by_session_id(session_id) ⇒ Object
Hook to set up sessid compatibility.
- .fingerprint(data) ⇒ Object
- .marshal(data) ⇒ Object
- .unmarshal(data) ⇒ Object
Instance Method Summary collapse
-
#data ⇒ Object
Lazy-unmarshal session state.
Class Method Details
.create_table! ⇒ Object
52 53 54 55 56 57 58 59 60 |
# File 'lib/action_controller/session/active_record_store.rb', line 52 def create_table! connection.execute <<-end_sql CREATE TABLE #{table_name} ( id INTEGER PRIMARY KEY, #{connection.quote_column_name('session_id')} TEXT UNIQUE, #{connection.quote_column_name('data')} TEXT ) end_sql end |
.drop_table! ⇒ Object
62 63 64 |
# File 'lib/action_controller/session/active_record_store.rb', line 62 def drop_table! connection.execute "DROP TABLE #{table_name}" end |
.find_by_session_id(session_id) ⇒ Object
Hook to set up sessid compatibility.
43 44 45 46 |
# File 'lib/action_controller/session/active_record_store.rb', line 43 def find_by_session_id(session_id) setup_sessid_compatibility! find_by_session_id(session_id) end |
.fingerprint(data) ⇒ Object
50 |
# File 'lib/action_controller/session/active_record_store.rb', line 50 def fingerprint(data) Digest::MD5.hexdigest(data) end |
.marshal(data) ⇒ Object
48 |
# File 'lib/action_controller/session/active_record_store.rb', line 48 def marshal(data) Base64.encode64(Marshal.dump(data)) end |
.unmarshal(data) ⇒ Object
49 |
# File 'lib/action_controller/session/active_record_store.rb', line 49 def unmarshal(data) Marshal.load(Base64.decode64(data)) end |
Instance Method Details
#data ⇒ Object
Lazy-unmarshal session state. Take a fingerprint so we can detect whether to save changes later.
88 89 90 91 92 93 94 95 96 97 98 99 100 |
# File 'lib/action_controller/session/active_record_store.rb', line 88 def data unless @data case @data = read_attribute('data') when String @fingerprint = self.class.fingerprint(@data) @data = self.class.unmarshal(@data) when nil @data = {} @fingerprint = nil end end @data end |