class ActionDispatch::Session::MultiSessionStore
Constants
- DEFAULT_PARAM_NAME
- DEFAULT_SESSION_EXPIRATION
Public Class Methods
new(app, options = {})
click to toggle source
Calls superclass method
# File lib/multi_session_store.rb, line 14 def initialize(app, options = {}) options[:expire_after] ||= DEFAULT_SESSION_EXPIRATION options[:param_name] ||= DEFAULT_PARAM_NAME options[:serializer] ||= JSON @redis = options[:redis] @param_name = options[:param_name] @serializer = options[:serializer] super end
Public Instance Methods
delete_session(env, sid, options)
click to toggle source
# File lib/multi_session_store.rb, line 44 def delete_session(env, sid, options) @redis.del session_store_key(env, sid) sid end
find_session(env, sid)
click to toggle source
# File lib/multi_session_store.rb, line 24 def find_session(env, sid) if sid serialized_session_data = @redis.get session_store_key(env, sid) session_data = serialized_session_data ? @serializer.parse(serialized_session_data) : {} [sid, session_data] else [generate_sid, {}] end end
validate_sessions(&block)
click to toggle source
# File lib/multi_session_store.rb, line 49 def validate_sessions(&block) all_sessions.each do |key, session| @redis.del key unless block.call session end end
write_session(env, sid, session, options)
click to toggle source
# File lib/multi_session_store.rb, line 34 def write_session(env, sid, session, options) key = session_store_key env, sid if session @redis.set key, @serializer.dump(session), ex: options[:expire_after] else @redis.del key end sid end
Private Instance Methods
all_sessions()
click to toggle source
# File lib/multi_session_store.rb, line 62 def all_sessions session_store_keys.each_with_object({}) do |key, memo| serialized_value = @redis.get key next if serialized_value.nil? memo[key] = @serializer.parse serialized_value end end
session_store_key(env, sid)
click to toggle source
# File lib/multi_session_store.rb, line 57 def session_store_key(env, sid) subsession_id = env.params[@param_name] || 'no_subsession' "_session_id:#{sid}:#{subsession_id}" end
session_store_keys()
click to toggle source
# File lib/multi_session_store.rb, line 70 def session_store_keys @redis.keys "_session_id:*" end