Class: ActionDispatch::Session::RedisSessionStorage
- Inherits:
-
AbstractStore
- Object
- AbstractStore
- ActionDispatch::Session::RedisSessionStorage
- Defined in:
- lib/redis_session_storage.rb
Defined Under Namespace
Classes: JsonSerializer
Instance Method Summary collapse
- #destroy_session(env, session_id, options) ⇒ Object
- #determine_serializer(serializer) ⇒ Object
- #get_session(env, session_id) ⇒ Object
-
#initialize(app, options = {}) ⇒ RedisSessionStorage
constructor
A new instance of RedisSessionStorage.
- #set_session(env, session_id, session_data, options) ⇒ Object
Constructor Details
#initialize(app, options = {}) ⇒ RedisSessionStorage
Returns a new instance of RedisSessionStorage.
6 7 8 9 10 11 12 13 14 |
# File 'lib/redis_session_storage.rb', line 6 def initialize(app, = {}) host = [:host] || '127.0.0.1' port = [:port] || 6379 db = [:db] || 0 @prefix = [:key] || "" @serializer = determine_serializer([:serializer]) @redis = Redis.new(:host => host, :port => port, :db => db) return super end |
Instance Method Details
#destroy_session(env, session_id, options) ⇒ Object
41 42 43 44 |
# File 'lib/redis_session_storage.rb', line 41 def destroy_session(env, session_id, ) @redis.del(prefixed_key(session_id)) return generate_sid() end |
#determine_serializer(serializer) ⇒ Object
46 47 48 49 50 51 52 53 |
# 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) ⇒ Object
16 17 18 19 20 |
# 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) ⇒ Object
22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/redis_session_storage.rb', line 22 def set_session(env, session_id, session_data, ) begin key = prefixed_key(session_id) if session_data if([:expire_after]) @redis.setex(key, [: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 |