Sha256: 5759cd94cfad80f998197879bf449d0b322d7327551b593d579845875ec8aa48

Contents?: true

Size: 1.5 KB

Versions: 47

Compression:

Stored size: 1.5 KB

Contents

require 'action_dispatch/middleware/session/abstract_store'
require 'rack/session/memcache'

module ActionDispatch
  module Session
    # 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.
    class CacheStore < AbstractStore
      # Create a new store. The cache to use can be passed in the <tt>:cache</tt> option. If it is
      # not specified, <tt>Rails.cache</tt> will be used.
      def initialize(app, options = {})
        @cache = options[:cache] || Rails.cache
        options[:expire_after] ||= @cache.options[:expires_in]
        super
      end

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

      # Set a session in the cache.
      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

      # Remove a session from the cache.
      def destroy_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

47 entries across 34 versions & 4 rubygems

Version Path
challah-0.6.2 vendor/bundle/gems/actionpack-3.2.2/lib/action_dispatch/middleware/session/cache_store.rb
challah-0.6.2 vendor/bundle/gems/actionpack-3.2.3/lib/action_dispatch/middleware/session/cache_store.rb
sunrise-cms-0.3.3 vendor/bundle/ruby/1.9.1/gems/actionpack-3.2.3/lib/action_dispatch/middleware/session/cache_store.rb
sunrise-cms-0.3.3 vendor/bundle/ruby/1.9.1/gems/rails-uploader-0.0.1/vendor/bundle/ruby/1.9.1/gems/actionpack-3.2.3/lib/action_dispatch/middleware/session/cache_store.rb
sunrise-cms-0.3.2 vendor/bundle/ruby/1.9.1/gems/rails-uploader-0.0.1/vendor/bundle/ruby/1.9.1/gems/actionpack-3.2.3/lib/action_dispatch/middleware/session/cache_store.rb
sunrise-cms-0.3.2 vendor/bundle/ruby/1.9.1/gems/actionpack-3.2.3/lib/action_dispatch/middleware/session/cache_store.rb
sunrise-cms-0.3.1 vendor/bundle/ruby/1.9.1/gems/actionpack-3.2.3/lib/action_dispatch/middleware/session/cache_store.rb
sunrise-cms-0.3.1 vendor/bundle/ruby/1.9.1/gems/rails-uploader-0.0.1/vendor/bundle/ruby/1.9.1/gems/actionpack-3.2.3/lib/action_dispatch/middleware/session/cache_store.rb
sunrise-cms-0.3.0 vendor/bundle/ruby/1.9.1/gems/rails-uploader-0.0.1/vendor/bundle/ruby/1.9.1/gems/actionpack-3.2.3/lib/action_dispatch/middleware/session/cache_store.rb
sunrise-cms-0.3.0 vendor/bundle/ruby/1.9.1/gems/actionpack-3.2.3/lib/action_dispatch/middleware/session/cache_store.rb
rails-uploader-0.0.4 vendor/bundle/ruby/1.9.1/gems/actionpack-3.2.3/lib/action_dispatch/middleware/session/cache_store.rb
challah-0.6.1 vendor/bundle/gems/actionpack-3.2.1/lib/action_dispatch/middleware/session/cache_store.rb
challah-0.6.1 vendor/bundle/gems/actionpack-3.2.3/lib/action_dispatch/middleware/session/cache_store.rb
challah-0.6.1 vendor/bundle/gems/actionpack-3.2.2/lib/action_dispatch/middleware/session/cache_store.rb
sunrise-cms-0.3.0.rc vendor/bundle/ruby/1.9.1/gems/rails-uploader-0.0.1/vendor/bundle/ruby/1.9.1/gems/actionpack-3.2.3/lib/action_dispatch/middleware/session/cache_store.rb
sunrise-cms-0.3.0.rc vendor/bundle/ruby/1.9.1/gems/actionpack-3.2.3/lib/action_dispatch/middleware/session/cache_store.rb
rails-uploader-0.0.1 vendor/bundle/ruby/1.9.1/gems/actionpack-3.2.3/lib/action_dispatch/middleware/session/cache_store.rb
challah-0.6.0 vendor/bundle/gems/actionpack-3.2.2/lib/action_dispatch/middleware/session/cache_store.rb
challah-0.6.0 vendor/bundle/gems/actionpack-3.2.3/lib/action_dispatch/middleware/session/cache_store.rb
challah-0.6.0 vendor/bundle/gems/actionpack-3.2.1/lib/action_dispatch/middleware/session/cache_store.rb