Class: Merb::MemorySession
Sessions stored in memory.
And a setting in +merb.yml+:
:session_store: mem_cache :memory_session_ttl: 3600 (in seconds, one hour)
Sessions will remain in memory until the server is stopped or the time as set in :memory_session_ttl expires.
Attributes
| Name | Read/write? |
|---|---|
| data | RW |
| needs_new_cookie | RW |
| session_id | RW |
Public Class Methods
generate ()
Generates a new session ID and creates a row for the new session in the database.
# File lib/merb/session/memory_session.rb, line 46 46: def generate 47: sid = Merb::SessionMixin::rand_uuid 48: MemorySessionContainer[sid] = new(sid) 49: end
new (session_id)
# File lib/merb/session/memory_session.rb, line 39 39: def initialize(session_id) 40: @session_id = session_id 41: @data = {} 42: end
persist (session_id)
Gets the existing session based on the session_id available in cookies. If none is found, generates a new session.
# File lib/merb/session/memory_session.rb, line 53 53: def persist(session_id) 54: if session_id 55: session = MemorySessionContainer[session_id] 56: end 57: unless session 58: session = generate 59: end 60: [session, session.session_id] 61: end
Public Instance Methods
[] (k)
# File lib/merb/session/memory_session.rb, line 96 96: def [](k) 97: @data[k] 98: end
[]= (k, v)
assigns a key value pair
# File lib/merb/session/memory_session.rb, line 92 92: def []=(k, v) 93: @data[k] = v 94: end
delete ()
Lazy-delete of session data
# File lib/merb/session/memory_session.rb, line 82 82: def delete 83: @data = {} 84: end
each (&b)
# File lib/merb/session/memory_session.rb, line 100 100: def each(&b) 101: @data.each(&b) 102: end
loaded? ()
Has the session been loaded yet?
# File lib/merb/session/memory_session.rb, line 87 87: def loaded? 88: !! @data 89: end
refresh_expiration ()
Recreates the cookie with the default expiration time Useful during log in for pushing back the expiration date
# File lib/merb/session/memory_session.rb, line 77 77: def refresh_expiration 78: self.needs_new_cookie=true 79: end
regenerate ()
Regenerate the Session ID
# File lib/merb/session/memory_session.rb, line 66 66: def regenerate 67: new_sid = Merb::SessionMixin::rand_uuid 68: old_sid = @session_id 69: MemorySessionContainer[new_sid] = MemorySessionContainer[old_sid] 70: @session_id = new_sid 71: MemorySessionContainer.delete(old_sid) 72: self.needs_new_cookie=true 73: end