Sha256: 17d535d85b15ca8b5ba59e2e820c3f371265154ea34dce7760ae337344406f25

Contents?: true

Size: 923 Bytes

Versions: 90

Compression:

Stored size: 923 Bytes

Contents

module R10K

  # This class implements a generic object memoization container. It caches
  # new objects and returns cached objects based on the instantiation arguments.
  class InstanceCache

    # Initialize a new registry with a given class
    #
    # @param klass [Class] The class to memoize
    # @param method [Symbol] The method name to use when creating objects.
    #                        Defaults to :new.
    def initialize(klass, method = :new)
      @klass  = klass
      @method = method
      @instances = {}
    end

    # Create a new object, or return a memoized object.
    #
    # @param args [*Object] The arguments to pass to the initialize method
    #
    # @return [Object] A memoized instance of the registered class
    def generate(*args)
      @instances[args] ||= @klass.send(@method, *args)
    end

    # Clear all memoized objects
    def clear!
      @instances = {}
    end
  end
end

Version data entries

90 entries across 90 versions & 2 rubygems

Version Path
r10k-5.0.0 lib/r10k/instance_cache.rb
r10k-4.1.0 lib/r10k/instance_cache.rb
r10k-4.0.2 lib/r10k/instance_cache.rb
r10k-4.0.1 lib/r10k/instance_cache.rb
r10k-4.0.0 lib/r10k/instance_cache.rb
r10k-4.0.0.pre lib/r10k/instance_cache.rb
r10k-3.16.0 lib/r10k/instance_cache.rb
r10k-3.15.4 lib/r10k/instance_cache.rb
r10k-3.15.3 lib/r10k/instance_cache.rb
r10k-3.15.2 lib/r10k/instance_cache.rb
r10k-3.15.1 lib/r10k/instance_cache.rb
r10k-3.15.0 lib/r10k/instance_cache.rb
akerl-r10k-3.14.2.1 lib/r10k/instance_cache.rb
r10k-3.14.2 lib/r10k/instance_cache.rb
r10k-3.14.1 lib/r10k/instance_cache.rb
r10k-3.14.0 lib/r10k/instance_cache.rb
r10k-3.13.0 lib/r10k/instance_cache.rb
r10k-3.12.1 lib/r10k/instance_cache.rb
r10k-3.12.0 lib/r10k/instance_cache.rb
r10k-3.11.0 lib/r10k/instance_cache.rb