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