Class: Rack::Session::Redis
- Inherits:
-
Abstract::PersistedSecure
- Object
- Abstract::PersistedSecure
- Rack::Session::Redis
- Defined in:
- lib/rack/session/redis.rb
Constant Summary collapse
- DEFAULT_OPTIONS =
Abstract::ID::DEFAULT_OPTIONS.merge( redis_server: 'redis://127.0.0.1:6379/0/rack:session' )
Instance Attribute Summary collapse
-
#mutex ⇒ Object
readonly
Returns the value of attribute mutex.
Instance Method Summary collapse
- #delete_session(req, sid, options) ⇒ Object
- #find_session(req, sid) ⇒ Object
-
#initialize(app, options = {}) ⇒ Redis
constructor
A new instance of Redis.
- #threadsafe? ⇒ Boolean
- #write_session(req, sid, new_session, options = {}) ⇒ Object
Constructor Details
#initialize(app, options = {}) ⇒ Redis
Returns a new instance of Redis.
17 18 19 20 21 22 |
# File 'lib/rack/session/redis.rb', line 17 def initialize(app, = {}) super @mutex = Mutex.new @conn = RediSesh::ConnectionWrapper.new() end |
Instance Attribute Details
#mutex ⇒ Object (readonly)
Returns the value of attribute mutex.
11 12 13 |
# File 'lib/rack/session/redis.rb', line 11 def mutex @mutex end |
Instance Method Details
#delete_session(req, sid, options) ⇒ Object
45 46 47 48 49 50 51 52 53 |
# File 'lib/rack/session/redis.rb', line 45 def delete_session(req, sid, ) with_lock(req) do with do |c| c.del(sid.public_id) c.del(sid.private_id) end generate_sid unless [:drop] end end |
#find_session(req, sid) ⇒ Object
24 25 26 27 28 29 30 31 32 33 34 35 36 |
# File 'lib/rack/session/redis.rb', line 24 def find_session(req, sid) if req.session.[:skip] [generate_sid, {}] else with_lock(req, [nil, {}]) do if sid && (session = get_session_with_fallback(sid)) [sid, session] else [generate_sid, {}] end end end end |
#threadsafe? ⇒ Boolean
55 56 57 |
# File 'lib/rack/session/redis.rb', line 55 def threadsafe? .fetch(:threadsafe, true) end |
#write_session(req, sid, new_session, options = {}) ⇒ Object
38 39 40 41 42 43 |
# File 'lib/rack/session/redis.rb', line 38 def write_session(req, sid, new_session, = {}) with_lock(req, false) do with { |c| c.set(sid.private_id, new_session, .to_hash) } sid end end |