Improve Redis::Store monkey-patch robustness
This commit is contained in:
parent
62ea02740d
commit
764eaedf81
1 changed files with 23 additions and 0 deletions
|
@ -4,13 +4,36 @@ module Gitlab
|
||||||
class Redis
|
class Redis
|
||||||
class Store
|
class Store
|
||||||
module Namespace
|
module Namespace
|
||||||
|
# Redis::Store#expire in redis-store 1.1.4 does not respect namespaces;
|
||||||
|
# this new method does.
|
||||||
def setex(key, expires_in, value, options=nil)
|
def setex(key, expires_in, value, options=nil)
|
||||||
namespace(key) { |key| super(key, expires_in, value) }
|
namespace(key) { |key| super(key, expires_in, value) }
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Redis::Store#expire in redis-store 1.1.4 does not respect namespaces;
|
||||||
|
# this new method does.
|
||||||
def expire(key, expires_in)
|
def expire(key, expires_in)
|
||||||
namespace(key) { |key| super(key, expires_in) }
|
namespace(key) { |key| super(key, expires_in) }
|
||||||
end
|
end
|
||||||
|
|
||||||
|
private
|
||||||
|
|
||||||
|
# Our new definitions of #setex and #expire above assume that the
|
||||||
|
# #namespace method exists. Because we cannot be sure of that, we
|
||||||
|
# re-implement the #namespace method from Redis::Store::Namespace so
|
||||||
|
# that it all Redis::Store instances, whether they use namespacing or
|
||||||
|
# not.
|
||||||
|
#
|
||||||
|
# Based on lib/redis/store/namespace.rb L49-51 (redis-store 1.1.4)
|
||||||
|
def namespace(key)
|
||||||
|
if @namespace
|
||||||
|
yield interpolate(key)
|
||||||
|
else
|
||||||
|
# This Redis::Store instance does not use a namespace so we should
|
||||||
|
# just pass through the key.
|
||||||
|
yield key
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue