Class: ActionDispatch::Session::MultiSessionStore
- Inherits:
-
AbstractStore
- Object
- AbstractStore
- ActionDispatch::Session::MultiSessionStore
- Defined in:
- lib/multi_session_store.rb
Constant Summary collapse
- DEFAULT_SESSION_EXPIRATION =
24 * 60 * 60
- DEFAULT_PARAM_NAME =
'subsession_id'.freeze
Instance Method Summary collapse
- #delete_session(env, sid, options) ⇒ Object
- #find_session(env, sid) ⇒ Object
-
#initialize(app, options = {}) ⇒ MultiSessionStore
constructor
A new instance of MultiSessionStore.
- #validate_sessions(&block) ⇒ Object
- #write_session(env, sid, session, options) ⇒ Object
Constructor Details
#initialize(app, options = {}) ⇒ MultiSessionStore
14 15 16 17 18 19 20 21 22 |
# File 'lib/multi_session_store.rb', line 14 def initialize(app, = {}) [:expire_after] ||= DEFAULT_SESSION_EXPIRATION [:param_name] ||= DEFAULT_PARAM_NAME [:serializer] ||= JSON @redis = [:redis] @param_name = [:param_name] @serializer = [:serializer] super end |
Instance Method Details
#delete_session(env, sid, options) ⇒ Object
44 45 46 47 |
# File 'lib/multi_session_store.rb', line 44 def delete_session(env, sid, ) @redis.del session_store_key(env, sid) sid end |
#find_session(env, sid) ⇒ Object
24 25 26 27 28 29 30 31 32 |
# 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) ⇒ Object
49 50 51 52 53 |
# 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) ⇒ Object
34 35 36 37 38 39 40 41 42 |
# File 'lib/multi_session_store.rb', line 34 def write_session(env, sid, session, ) key = session_store_key env, sid if session @redis.set key, @serializer.dump(session), ex: [:expire_after] else @redis.del key end sid end |