Sha256: d966621bbad550b3e0594f5844cf264f71e01f9f2ccd7cdee7d4a29f54dd6adb
Contents?: true
Size: 1.65 KB
Versions: 1
Compression:
Stored size: 1.65 KB
Contents
# frozen_string_literal: true require_relative "abstract_store" module ActionDispatch module Session # A 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. # # ==== Options # * <tt>cache</tt> - The cache to use. If it is not specified, <tt>Quails.cache</tt> will be used. # * <tt>expire_after</tt> - The length of time a session will be stored before automatically expiring. # By default, the <tt>:expires_in</tt> option of the cache is used. class CacheStore < AbstractStore def initialize(app, options = {}) @cache = options[:cache] || Quails.cache options[:expire_after] ||= @cache.options[:expires_in] super end # Get a session from the cache. def find_session(env, sid) unless sid && (session = @cache.read(cache_key(sid))) sid, session = generate_sid, {} end [sid, session] end # Set a session in the cache. def write_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 # Remove a session from the cache. def delete_session(env, sid, options) @cache.delete(cache_key(sid)) generate_sid end private # Turn the session id into a cache key. def cache_key(sid) "_session_id:#{sid}" end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
ruby-on-quails-0.1.0 | actionpack/lib/action_dispatch/middleware/session/cache_store.rb |