Class: Tina4::SessionHandlers::ValkeyHandler
- Inherits:
-
Object
- Object
- Tina4::SessionHandlers::ValkeyHandler
- Defined in:
- lib/tina4/session_handlers/valkey_handler.rb
Instance Method Summary collapse
- #cleanup ⇒ Object
- #destroy(session_id) ⇒ Object
-
#initialize(options = {}) ⇒ ValkeyHandler
constructor
A new instance of ValkeyHandler.
- #read(session_id) ⇒ Object
- #write(session_id, data) ⇒ Object
Constructor Details
#initialize(options = {}) ⇒ ValkeyHandler
Returns a new instance of ValkeyHandler.
7 8 9 10 11 12 13 14 15 16 17 18 19 |
# File 'lib/tina4/session_handlers/valkey_handler.rb', line 7 def initialize( = {}) require "redis" @prefix = [:prefix] || ENV["TINA4_SESSION_VALKEY_PREFIX"] || "tina4:session:" @ttl = [:ttl] || (ENV["TINA4_SESSION_VALKEY_TTL"] ? ENV["TINA4_SESSION_VALKEY_TTL"].to_i : 86400) @redis = Redis.new( host: [:host] || ENV["TINA4_SESSION_VALKEY_HOST"] || "localhost", port: [:port] || (ENV["TINA4_SESSION_VALKEY_PORT"] ? ENV["TINA4_SESSION_VALKEY_PORT"].to_i : 6379), db: [:db] || (ENV["TINA4_SESSION_VALKEY_DB"] ? ENV["TINA4_SESSION_VALKEY_DB"].to_i : 0), password: [:password] || ENV["TINA4_SESSION_VALKEY_PASSWORD"] ) rescue LoadError raise "Valkey session handler requires the 'redis' gem (Valkey uses the RESP protocol). Install with: gem install redis" end |
Instance Method Details
#cleanup ⇒ Object
38 39 40 |
# File 'lib/tina4/session_handlers/valkey_handler.rb', line 38 def cleanup # Valkey handles TTL automatically (same as Redis) end |
#destroy(session_id) ⇒ Object
34 35 36 |
# File 'lib/tina4/session_handlers/valkey_handler.rb', line 34 def destroy(session_id) @redis.del("#{@prefix}#{session_id}") end |
#read(session_id) ⇒ Object
21 22 23 24 25 26 27 |
# File 'lib/tina4/session_handlers/valkey_handler.rb', line 21 def read(session_id) data = @redis.get("#{@prefix}#{session_id}") return nil unless data JSON.parse(data) rescue JSON::ParserError nil end |
#write(session_id, data) ⇒ Object
29 30 31 32 |
# File 'lib/tina4/session_handlers/valkey_handler.rb', line 29 def write(session_id, data) key = "#{@prefix}#{session_id}" @redis.setex(key, @ttl, JSON.generate(data)) end |