class ROM::Memoizable::Memoizer

@api private

Attributes

klass[R]
names[R]

Public Class Methods

new(klass, names) click to toggle source

@api private

# File lib/rom/support/memoizable.rb, line 35
def initialize(klass, names)
  @names = names
  @klass = klass
  define_memoizable_names!
end

Private Instance Methods

define_memoizable_names!() click to toggle source

@api private

Calls superclass method
# File lib/rom/support/memoizable.rb, line 44
def define_memoizable_names!
  names.each do |name|
    meth = klass.instance_method(name)

    if !meth.parameters.empty?
      define_method(name) do |*args|
        __memoized__[:"#{name}_#{args.hash}"] ||= super(*args)
      end
    else
      define_method(name) do
        __memoized__[name] ||= super()
      end
    end
  end
end