Module: MemoizeTtl

Defined in:
lib/memoize_ttl.rb,
lib/memoize_ttl/version.rb

Constant Summary collapse

VERSION =
"0.0.2"

Instance Method Summary collapse

Instance Method Details

#memoize_ttl(name, ttl_seconds, &block) ⇒ Object



5
6
7
8
9
10
11
12
13
14
15
16
17
# File 'lib/memoize_ttl.rb', line 5

def memoize_ttl(name, ttl_seconds, &block)
  class_variable_set("@@block_#{name}", block)
  module_eval <<-EOS, __FILE__, __LINE__ + 1
    def #{name}
      if !@#{name}.nil? && @#{name}_expire_at > Time.now
        return @#{name}
      end
      @#{name} = instance_exec(&@@block_#{name})
      @#{name}_expire_at = Time.now + #{ttl_seconds}
      @#{name}
    end
  EOS
end