module Redis::RedisHashSession

Public Class Methods

new(app, options = {}) click to toggle source
Calls superclass method
# File lib/rack/session/redis_hash.rb, line 3
def initialize(app, options = {})
  super
  @expire_after = options[:expire_after] || 60*60 # 60 minutes, default
end

Public Instance Methods

destroy_session(env, sid, options) click to toggle source
# File lib/rack/session/redis_hash.rb, line 34
def destroy_session(env, sid, options)
  session = Redis::LazyHash.new( session_prefix => sid )
  unless session.nil?
    options[:renew] ? session.renew_key : session.destroy
    session.key
  end
end
get_session(env, sid) click to toggle source
# File lib/rack/session/redis_hash.rb, line 8
def get_session(env, sid)
  session = Redis::LazyHash.new session_prefix => sid
  sid = session.key
  return [sid, session]
end
session_prefix() click to toggle source
# File lib/rack/session/redis_hash.rb, line 42
def session_prefix
  :rack_session
end
set_session(env, session_id, session, options) click to toggle source
# File lib/rack/session/redis_hash.rb, line 14
def set_session(env, session_id, session, options)
  @expire_after = options[:expire_after] || @expire_after
  unless session.kind_of?(Redis::LazyHash)
    real_session = Redis::LazyHash.new(session_prefix)
    real_session.update(session) if session.kind_of?(Hash)
    real_session.key = session_id unless session_id.nil?
    session = real_session
  end
  if options[:drop]
    session.destroy
    return false if options[:drop]
  end
  if options[:renew]
    session_id = session.renew_key
  end
  session.save
  session.expire @expire_after
  return session_id
end