class Dry::Core::Container::Item::Memoizable


@api public
Memoizable class to store and execute item calls

def call

Returns:
  • (Dry::Core::Container::Item::Base) -
def call
  memoize_mutex.synchronize do
    @memoized_item ||= item.call
  end
end

def initialize(item, options = {})

Returns:
  • (Dry::Core::Container::Item::Base) -

Raises:
  • (Dry::Core::Container::Error) -

Parameters:
  • options (Hash) --
  • item (Mixed) --
def initialize(item, options = {})
  super
  raise_not_supported_error unless callable?
  @memoize_mutex = ::Mutex.new
end

def raise_not_supported_error

Other tags:
    Private: -
def raise_not_supported_error
  raise ::Dry::Core::Container::Error, "Memoize only supported for a block or a proc"
end