module Memery::ClassMethods

Public Instance Methods

memoize(method_name, condition: nil, ttl: nil) click to toggle source
# File lib/memery.rb, line 38
def memoize(method_name, condition: nil, ttl: nil)
  prepend_memery_module!
  define_memoized_method!(method_name, condition: condition, ttl: ttl)
  method_name
end
memoized?(method_name) click to toggle source
# File lib/memery.rb, line 44
def memoized?(method_name)
  return false unless defined?(@_memery_module)

  @_memery_module.method_defined?(method_name) ||
  @_memery_module.private_method_defined?(method_name)
end

Private Instance Methods

define_memoized_method!(method_name, **options) click to toggle source
# File lib/memery.rb, line 59
def define_memoized_method!(method_name, **options)
  @_memery_module.define_memoized_method!(self, method_name, **options)
end
prepend_memery_module!() click to toggle source
# File lib/memery.rb, line 53
def prepend_memery_module!
  return if defined?(@_memery_module)
  @_memery_module = Module.new { extend MemoizationModule }
  prepend(@_memery_module)
end