class MultiSessionCacheStore

Constants

VERSION

Public Class Methods

new(app, options = {}) click to toggle source
Calls superclass method
# File lib/multi_session_cache_store.rb, line 4
def initialize(app, options = {})
  @cache = options[:cache] || Rails.cache
  options[:expire_after] ||= @cache.options[:expires_in]
  @param = options[:param]
  @serializer = options[:serializer]
  super
end

Public Instance Methods

delete_session(env, sid, options) click to toggle source
# File lib/multi_session_cache_store.rb, line 28
def delete_session(env, sid, options)
  @cache.delete(cache_key(env, sid))
  sid
end
find_session(env, sid) click to toggle source
# File lib/multi_session_cache_store.rb, line 12
def find_session(env, sid)
  sid ||= generate_sid
  session = @serializer.parse(@cache.read(cache_key(env, sid)) || "{}")
  [sid, session]
end
write_session(env, sid, session, options) click to toggle source
# File lib/multi_session_cache_store.rb, line 18
def write_session(env, sid, session, options)
  key = cache_key(env, sid)
  if session
    @cache.write(key, @serializer.dump(session), expires_in: options[:expire_after])
  else
    @cache.delete(key)
  end
  sid
end

Private Instance Methods

cache_key(env, sid) click to toggle source
# File lib/multi_session_cache_store.rb, line 35
def cache_key(env, sid)
  subsession_id = env.params[@param] || "no_subsession"
  "_session_id:#{sid}:#{subsession_id}"
end