Module: Memery

Extended by:
ModuleMethods::Extension
Defined in:
lib/memery.rb,
lib/memery/version.rb

Overview

Module for memoization

Defined Under Namespace

Modules: ClassMethods

Constant Summary collapse

VERSION =
'2.1.0'

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.method_visibility(klass, method_name) ⇒ Object



17
18
19
20
21
22
23
24
25
26
27
# File 'lib/memery.rb', line 17

def method_visibility(klass, method_name)
  if klass.private_method_defined?(method_name)
    :private
  elsif klass.protected_method_defined?(method_name)
    :protected
  elsif klass.public_method_defined?(method_name)
    :public
  else
    raise ArgumentError, "Method #{method_name} is not defined on #{klass}"
  end
end

.monotonic_clockObject



13
14
15
# File 'lib/memery.rb', line 13

def monotonic_clock
  Process.clock_gettime(Process::CLOCK_MONOTONIC)
end

Instance Method Details

#clear_memery_cache!(*method_names) ⇒ Object



84
85
86
87
88
89
90
91
92
# File 'lib/memery.rb', line 84

def clear_memery_cache!(*method_names)
  return unless defined? @_memery_memoized_values

  if method_names.any?
    method_names.each { |method_name| @_memery_memoized_values[method_name]&.clear }
  else
    @_memery_memoized_values.clear
  end
end