class ActionDispatch::Session::RedisSessionStorage
Public Class Methods
new(app, options = {})
click to toggle source
Calls superclass method
# File lib/redis_session_storage.rb, line 6 def initialize(app, options = {}) host = options[:host] || '127.0.0.1' port = options[:port] || 6379 db = options[:db] || 0 @prefix = options[:key] || "" @serializer = determine_serializer(options[:serializer]) @redis = Redis.new(:host => host, :port => port, :db => db) return super end
Public Instance Methods
destroy_session(env, session_id, options)
click to toggle source
# File lib/redis_session_storage.rb, line 41 def destroy_session(env, session_id, options) @redis.del(prefixed_key(session_id)) return generate_sid() end
determine_serializer(serializer)
click to toggle source
# File lib/redis_session_storage.rb, line 46 def determine_serializer(serializer) if serializer == :json serial = JsonSerializer else serial = Marshal end return serial end
get_session(env, session_id)
click to toggle source
# File lib/redis_session_storage.rb, line 16 def get_session(env, session_id) session_id ||= generate_sid() session_data = get_redis_session(prefixed_key(session_id)) || {} return [session_id, session_data] end
set_session(env, session_id, session_data, options)
click to toggle source
# File lib/redis_session_storage.rb, line 22 def set_session(env, session_id, session_data, options) begin key = prefixed_key(session_id) if session_data if(options[:expire_after]) @redis.setex(key, options[:expire_after], @serializer.dump(session_data)) else @redis.set(key, @serializer.dump(session_data)) end else @redis.del(key) end return session_id rescue => e Rails.logger.error("SessionDispatch::RedisSession - Unable to set redis session.") return false end end
Private Instance Methods
get_redis_session(key)
click to toggle source
# File lib/redis_session_storage.rb, line 61 def get_redis_session(key) begin data = @redis.get(key) data ? @serializer.load(data) : nil rescue => e Rails.logger.error("SessionDispatch::RedisSession - Unable to retrieve redis session.") return nil end end
prefixed_key(sid)
click to toggle source
# File lib/redis_session_storage.rb, line 57 def prefixed_key(sid) return "#{@prefix}#{sid}" end