class ActionDispatch::Session::DalliStore
Public Class Methods
new(app, options = {})
click to toggle source
Calls superclass method
# File lib/action_dispatch/middleware/session/dalli_store.rb, line 9 def initialize(app, options = {}) # Support old :expires option options[:expire_after] ||= options[:expires] super @default_options = { :namespace => 'rack:session' }.merge(@default_options) @pool = options[:cache] || begin Dalli::Client.new( @default_options[:memcache_server], @default_options) end @namespace = @default_options[:namespace] @raise_errors = !!@default_options[:raise_errors] super end
Public Instance Methods
reset()
click to toggle source
# File lib/action_dispatch/middleware/session/dalli_store.rb, line 28 def reset @pool.reset end
Private Instance Methods
destroy(env)
click to toggle source
# File lib/action_dispatch/middleware/session/dalli_store.rb, line 69 def destroy(env) if sid = current_session_id(env) @pool.delete(sid) end rescue Dalli::DalliError Rails.logger.warn("Session::DalliStore#destroy: #{$!.message}") raise if @raise_errors false end
destroy_session(env, session_id, options)
click to toggle source
# File lib/action_dispatch/middleware/session/dalli_store.rb, line 58 def destroy_session(env, session_id, options) begin @pool.delete(session_id) rescue Dalli::DalliError Rails.logger.warn("Session::DalliStore#destroy_session: #{$!.message}") raise if @raise_errors end return nil if options[:drop] generate_sid end
get_session(env, sid)
click to toggle source
# File lib/action_dispatch/middleware/session/dalli_store.rb, line 34 def get_session(env, sid) sid = generate_sid unless sid and !sid.empty? begin session = @pool.get(sid) || {} rescue Dalli::DalliError => ex # re-raise ArgumentError so Rails' session abstract_store.rb can autoload any missing models raise ArgumentError, ex.message if ex.message =~ /unmarshal/ Rails.logger.warn("Session::DalliStore#get: #{ex.message}") session = {} end [sid, session] end
set_session(env, sid, session_data, options = nil)
click to toggle source
# File lib/action_dispatch/middleware/session/dalli_store.rb, line 47 def set_session(env, sid, session_data, options = nil) options ||= env[ENV_SESSION_OPTIONS_KEY] expiry = options[:expire_after] @pool.set(sid, session_data, expiry) sid rescue Dalli::DalliError Rails.logger.warn("Session::DalliStore#set: #{$!.message}") raise if @raise_errors false end