class Mustermann::PatternCache
A simple, persistent cache for creating repositories.
@example
require 'mustermann/pattern_cache' cache = Mustermann::PatternCache.new # use this instead of Mustermann.new pattern = cache.create_pattern("/:name", type: :rails)
@note
{Mustermann::Pattern.new} (which is used by {Mustermann.new}) will reuse instances that have not yet been garbage collected. You only need an extra cache if you do not keep a reference to the patterns around.
@api private
Public Class Methods
Source
# File lib/mustermann/pattern_cache.rb, line 24 def initialize(**pattern_options) @cached = Set.new @mutex = Mutex.new @pattern_options = pattern_options end
@param [Hash] pattern_options default options used for {#create_pattern}
Public Instance Methods
Source
# File lib/mustermann/pattern_cache.rb, line 41 def clear @mutex.synchronize { @cached.clear } end
Removes all pattern instances from the cache.
Source
# File lib/mustermann/pattern_cache.rb, line 34 def create_pattern(string, **pattern_options) pattern = Mustermann.new(string, **pattern_options, **@pattern_options) @mutex.synchronize { @cached.add(pattern) } unless @cached.include? pattern pattern end
@param (see Mustermann.new
) @return (see Mustermann.new
) @raise (see Mustermann.new
) @see Mustermann.new
Source
# File lib/mustermann/pattern_cache.rb, line 46 def size @mutex.synchronize { @cached.size } end
@return [Integer] number of currently cached patterns