Method: Mongory::Utils::ClassMethods#define_instance_cache_method

Defined in:
lib/mongory/utils.rb

#define_instance_cache_method(name) { ... } ⇒ void

This method returns an undefined value.

Defines a lazily-evaluated, memoized instance method.

Examples:

define_instance_cache_method(:expensive_thing) { compute_something }

Yields:

  • block to compute the value



66
67
68
69
70
71
72
73
# File 'lib/mongory/utils.rb', line 66

def define_instance_cache_method(name, &block)
  instance_key = :"@#{name}"
  define_method(name) do
    return instance_variable_get(instance_key) if instance_variable_defined?(instance_key)

    instance_variable_set(instance_key, instance_exec(&block))
  end
end