Class: Merb::MemCacheSession
Sessions stored in memcached.
Requires setup in your +merb_init.rb+:
require 'memcache'
CACHE = MemCache.new('127.0.0.1:11211', { :namespace => 'my_app' })
And a setting in +merb.yml+:
:session_store: mem_cache
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/mem_cache_session.rb, line 53 53: def generate 54: sid = Merb::SessionMixin::rand_uuid 55: new(sid) 56: end
new (session_id)
# File lib/merb/session/mem_cache_session.rb, line 46 46: def initialize(session_id) 47: @session_id = session_id 48: @data = {} 49: 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/mem_cache_session.rb, line 60 60: def persist(session_id) 61: unless session_id.blank? 62: session = ::Cache.get("session:#{session_id}") 63: if session.nil? 64: # Not in memcached, but assume that cookie exists 65: session = new(session_id) 66: end 67: else 68: # No cookie...make a new session_id 69: session = generate 70: end 71: if session.is_a?(MemCacheSession) 72: [session, session.session_id] 73: else 74: # recreate using the rails session as the data 75: session_object = MemCacheSession.new(session_id) 76: session_object.data = session 77: [session_object, session_object.session_id] 78: end 79: 80: end
Public Instance Methods
[] (k)
# File lib/merb/session/mem_cache_session.rb, line 116 116: def [](k) 117: @data[k] 118: end
[]= (k, v)
assigns a key value pair
# File lib/merb/session/mem_cache_session.rb, line 112 112: def []=(k, v) 113: @data[k] = v 114: end
delete ()
Lazy-delete of session data
# File lib/merb/session/mem_cache_session.rb, line 102 102: def delete 103: @data = {} 104: end
each (&b)
# File lib/merb/session/mem_cache_session.rb, line 120 120: def each(&b) 121: @data.each(&b) 122: end
loaded? ()
Has the session been loaded yet?
# File lib/merb/session/mem_cache_session.rb, line 107 107: def loaded? 108: !! @data 109: 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/mem_cache_session.rb, line 97 97: def refresh_expiration 98: self.needs_new_cookie=true 99: end
regenerate ()
Regenerate the Session ID
# File lib/merb/session/mem_cache_session.rb, line 90 90: def regenerate 91: @session_id = Merb::SessionMixin::rand_uuid 92: self.needs_new_cookie=true 93: end