class Rakuna::Session::Redis::Session
A session backed by redis.
Public Class Methods
new(redis, session_id, options = {})
click to toggle source
# File lib/rakuna/session/redis.rb, line 18 def initialize(redis, session_id, options = {}) @redis = redis @session_id = session_id @namespace = options.fetch 'namespace', '_' end
Public Instance Methods
active?()
click to toggle source
# File lib/rakuna/session/redis.rb, line 35 def active? @redis.exists "#{session}:active" end
get(key)
click to toggle source
# File lib/rakuna/session/redis.rb, line 30 def get(key) @redis.hget session, key end
renew(duration = 300)
click to toggle source
# File lib/rakuna/session/redis.rb, line 40 def renew(duration = 300) @redis.set "#{session}:active", true, ex: duration end
set(key, value)
click to toggle source
# File lib/rakuna/session/redis.rb, line 25 def set(key, value) @redis.hset session, key, value end
Private Instance Methods
id()
click to toggle source
# File lib/rakuna/session/redis.rb, line 57 def id OpenSSL::HMAC.hexdigest OpenSSL::Digest::SHA256.new, seed, @session_id end
reseed()
click to toggle source
# File lib/rakuna/session/redis.rb, line 47 def reseed SecureRandom.uuid.tap { |uuid| @redis.set "#{@namespace}:seed", uuid } end
seed()
click to toggle source
# File lib/rakuna/session/redis.rb, line 52 def seed @seed ||= @redis.get("#{@namespace}:seed") || reseed end
session()
click to toggle source
# File lib/rakuna/session/redis.rb, line 62 def session @session ||= "#{@namespace}:#{id}" end