lib/dalli/key_manager.rb in dalli-3.2.2 vs lib/dalli/key_manager.rb in dalli-3.2.3
- old
+ new
@@ -59,11 +59,11 @@
# defined. Otherwise just returns the key
##
def key_with_namespace(key)
return key if namespace.nil?
- "#{namespace}#{NAMESPACE_SEPARATOR}#{key}"
+ "#{evaluate_namespace}#{NAMESPACE_SEPARATOR}#{key}"
end
def key_without_namespace(key)
return key if namespace.nil?
@@ -73,10 +73,12 @@
def digest_class
@digest_class ||= @key_options[:digest_class]
end
def namespace_regexp
+ return /\A#{Regexp.escape(evaluate_namespace)}:/ if namespace.is_a?(Proc)
+
@namespace_regexp ||= /\A#{Regexp.escape(namespace)}:/.freeze unless namespace.nil?
end
def validate_digest_class_option(opts)
return if opts[:digest_class].respond_to?(:hexdigest)
@@ -85,12 +87,18 @@
end
def namespace_from_options
raw_namespace = @key_options[:namespace]
return nil unless raw_namespace
- return raw_namespace.call.to_s if raw_namespace.is_a?(Proc)
+ return raw_namespace.to_s unless raw_namespace.is_a?(Proc)
- raw_namespace.to_s
+ raw_namespace
+ end
+
+ def evaluate_namespace
+ return namespace.call.to_s if namespace.is_a?(Proc)
+
+ namespace
end
##
# Produces a truncated key, if the raw key is longer than the maximum allowed
# length. The truncated key is produced by generating a hex digest