Sha256: 9b4658568276246f188d4ed3d1f2214f4e7f947b763dd948785c79bd09f9e011
Contents?: true
Size: 1.45 KB
Versions: 38
Compression:
Stored size: 1.45 KB
Contents
module ActionDispatch module Session class MemCacheStore < AbstractStore def initialize(app, options = {}) require 'memcache' # Support old :expires option options[:expire_after] ||= options[:expires] super @default_options = { :namespace => 'rack:session', :memcache_server => 'localhost:11211' }.merge(@default_options) @pool = options[:cache] || MemCache.new(@default_options[:memcache_server], @default_options) unless @pool.servers.any? { |s| s.alive? } raise "#{self} unable to find server during initialization." end @mutex = Mutex.new super end private def get_session(env, sid) sid ||= generate_sid begin session = @pool.get(sid) || {} rescue MemCache::MemCacheError, Errno::ECONNREFUSED session = {} end [sid, session] end def set_session(env, sid, session_data) options = env['rack.session.options'] expiry = options[:expire_after] || 0 @pool.set(sid, session_data, expiry) sid rescue MemCache::MemCacheError, Errno::ECONNREFUSED false end def destroy(env) if sid = current_session_id(env) @pool.delete(sid) end rescue MemCache::MemCacheError, Errno::ECONNREFUSED false end end end end
Version data entries
38 entries across 38 versions & 1 rubygems