module MemoizeTtl

Constants

VERSION

Public Instance Methods

memoize_ttl(name, ttl_seconds, &block) click to toggle source
# 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