Class: ActionDispatch::Session::CacheStore

Inherits:
AbstractStore
  • Object
show all
Defined in:
lib/action_dispatch/middleware/session/cache_store.rb

Overview

Session store that uses an ActiveSupport::Cache::Store to store the sessions. This store is most useful if you don't store critical data in your sessions and you don't need them to live for extended periods of time.

Instance Method Summary collapse

Methods included from StaleSessionCheck

#extract_session_id, #load_session, #stale_session_check!

Methods included from Compatibility

#generate_sid

Constructor Details

#initialize(app, options = {}) ⇒ CacheStore

Create a new store. The cache to use can be passed in the :cache option. If it is not specified, Rails.cache will be used.


11
12
13
14
15
# File 'lib/action_dispatch/middleware/session/cache_store.rb', line 11

def initialize(app, options = {})
  @cache = options[:cache] || Rails.cache
  options[:expire_after] ||= @cache.options[:expires_in]
  super
end

Instance Method Details

#destroy_session(env, sid, options) ⇒ Object

Remove a session from the cache.


37
38
39
40
# File 'lib/action_dispatch/middleware/session/cache_store.rb', line 37

def destroy_session(env, sid, options)
  @cache.delete(cache_key(sid))
  generate_sid
end

#get_session(env, sid) ⇒ Object

Get a session from the cache.


18
19
20
21
22
23
# File 'lib/action_dispatch/middleware/session/cache_store.rb', line 18

def get_session(env, sid)
  sid ||= generate_sid
  session = @cache.read(cache_key(sid))
  session ||= {}
  [sid, session]
end

#set_session(env, sid, session, options) ⇒ Object

Set a session in the cache.


26
27
28
29
30
31
32
33
34
# File 'lib/action_dispatch/middleware/session/cache_store.rb', line 26

def set_session(env, sid, session, options)
  key = cache_key(sid)
  if session
    @cache.write(key, session, :expires_in => options[:expire_after])
  else
    @cache.delete(key)
  end
  sid
end