lib/rack/session/redis.rb in redis-store-0.3.7 vs lib/rack/session/redis.rb in redis-store-0.3.8
- old
+ new
@@ -5,28 +5,28 @@
DEFAULT_OPTIONS = Abstract::ID::DEFAULT_OPTIONS.merge :redis_server => "localhost:6379"
def initialize(app, options = {})
super
@mutex = Mutex.new
- @pool = RedisFactory.create options[:redis_server] || @default_options[:redis_server]
+ @pool = ::Redis::Factory.create options[:redis_server] || @default_options[:redis_server]
end
def generate_sid
loop do
sid = super
- break sid unless @pool.get(sid)
+ break sid unless @pool.marshalled_get(sid)
end
end
def get_session(env, sid)
- session = @pool.get(sid) if sid
+ session = @pool.marshalled_get(sid) if sid
@mutex.lock if env['rack.multithread']
unless sid and session
env['rack.errors'].puts("Session '#{sid.inspect}' not found, initializing...") if $VERBOSE and not sid.nil?
session = {}
sid = generate_sid
- ret = @pool.set sid, session
+ ret = @pool.marshalled_set sid, session
raise "Session collision on '#{sid.inspect}'" unless ret
end
session.instance_variable_set('@old', {}.merge(session))
return [sid, session]
rescue Errno::ECONNREFUSED
@@ -37,39 +37,39 @@
@mutex.unlock if env['rack.multithread']
end
def set_session(env, session_id, new_session, options)
@mutex.lock if env['rack.multithread']
- session = @pool.get(session_id) rescue {}
+ session = @pool.marshalled_get(session_id) rescue {}
if options[:renew] or options[:drop]
- @pool.delete session_id
+ @pool.del session_id
return false if options[:drop]
session_id = generate_sid
- @pool.set session_id, 0
+ @pool.marshalled_set session_id, 0
end
old_session = new_session.instance_variable_get('@old') || {}
session = merge_sessions session_id, old_session, new_session, session
- @pool.set session_id, session, options
+ @pool.marshalled_set session_id, session, options
return session_id
rescue Errno::ECONNREFUSED
warn "#{self} is unable to find server."
warn $!.inspect
return false
ensure
@mutex.unlock if env['rack.multithread']
end
-
+
private
def merge_sessions(sid, old, new, cur=nil)
cur ||= {}
unless Hash === old and Hash === new
warn 'Bad old or new sessions provided.'
return cur
end
delete = old.keys - new.keys
warn "//@#{sid}: dropping #{delete*','}" if $DEBUG and not delete.empty?
- delete.each{|k| cur.delete k }
+ delete.each{|k| cur.del k }
update = new.keys.select{|k| new[k] != old[k] }
warn "//@#{sid}: updating #{update*','}" if $DEBUG and not update.empty?
update.each{|k| cur[k] = new[k] }