module AIXM::Memoize::ClassMethods
Public Instance Methods
memoize(method)
click to toggle source
# File lib/aixm/memoize.rb 52 def memoize(method) 53 unmemoized_method = :"unmemoized_#{method}" 54 alias_method unmemoized_method, method 55 define_method method do |*args, **kargs, &block| 56 if block || !AIXM::Memoize.cache 57 send(unmemoized_method, *args, **kargs, &block) 58 else 59 id = object_id.hash ^ args.hash ^ kargs.hash 60 if AIXM::Memoize.cache.has_key?(id) 61 AIXM::Memoize.cache[id] 62 else 63 AIXM::Memoize.cache[id] = send(unmemoized_method, *args, **kargs, &block) 64 end 65 end 66 end 67 end