class Surikat::SessionManager
Attributes
config[R]
Public Class Methods
new()
click to toggle source
# File lib/surikat/session_manager.rb, line 3 def initialize @config = Surikat.config.app['session'] #puts "Session manager configured with #{@config.inspect}" case @config['storage'] when 'redis' @store = Redis.new url: @config['redis_url'] when 'file' @filename = @config['file'] || 'surikat_session_store' @store = Marshal.load(File.read(@filename)) rescue {} end end
Public Instance Methods
[](key)
click to toggle source
# File lib/surikat/session_manager.rb, line 20 def [](key) case @config['storage'] when 'file' @store[key] when 'redis' existing = @store.get("surikat_session_key_#{key}") existing ? Marshal.load(existing) : {} end end
delete_key!(skey, key)
click to toggle source
# File lib/surikat/session_manager.rb, line 68 def delete_key!(skey, key) case @config['storage'] when 'redis' redis_key = "surikat_session_key_#{key}" if existing = @store.get(redis_key) existing_object = Marshal.load(existing) new_object = existing_object.delete(key) new_data = Marshal.dump(new_object) end @store.set(redis_key, new_data) when 'file' @store[skey].delete(key) File.open(@filename, 'w') {|f| f.write Marshal.dump(@store)} end end
destroy!(skey)
click to toggle source
# File lib/surikat/session_manager.rb, line 58 def destroy!(skey) case @config['storage'] when 'redis' @store.del("surikat_session_key_#{skey}") when 'file' @store.delete(skey) File.open(@filename, 'w') {|f| f.write Marshal.dump(@store)} end end
merge!(key, hash)
click to toggle source
# File lib/surikat/session_manager.rb, line 30 def merge!(key, hash) return if key.nil? case @config['storage'] when 'redis' redis_key = "surikat_session_key_#{key}" if existing = @store.get(redis_key) existing_object = Marshal.load(existing) new_object = existing_object.merge(hash) else new_object = hash end new_data = Marshal.dump(new_object) @store.set(redis_key, new_data) when 'file' if @store[key] @store[key].merge!(hash) else @store[key] = hash end File.open(@filename, 'w') {|f| f.write Marshal.dump(@store)} end true end