Method: XCCache::Cacheable#cacheable

Defined in:
lib/xccache/core/cacheable.rb

#cacheable(*method_names) ⇒ Object



3
4
5
6
7
8
9
10
11
12
13
14
# File 'lib/xccache/core/cacheable.rb', line 3

def cacheable(*method_names)
  method_names.each do |method_name|
    const_get(__cacheable_module_name).class_eval do
      define_method(method_name) do |*args, **kwargs|
        @_cache ||= {}
        @_cache[method_name] ||= {}
        @_cache[method_name][args.hash | kwargs.hash] ||=
          method(method_name).super_method.call(*args, **kwargs)
      end
    end
  end
end