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