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

NameRead/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