Sha256: 2444f861ea69d84a73214e33b8fe39dbdc18b0133c3b4177157feea1cdddae38

Contents?: true

Size: 465 Bytes

Versions: 9

Compression:

Stored size: 465 Bytes

Contents

module Apnotic
  class InstanceCache
    def initialize(instance, method, ttl)
      @instance = instance
      @method   = method
      @ttl      = ttl
    end

    def call
      if @cached_value && !expired?
        @cached_value
      else
        new_value
      end
    end

    private

    def expired?
      Time.now - @cached_at >= @ttl
    end

    def new_value
      @cached_at = Time.now
      @cached_value = @instance.send(@method)
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
apnotic-1.7.0 lib/apnotic/instance_cache.rb
apnotic-1.6.1 lib/apnotic/instance_cache.rb
apnotic-1.6.0 lib/apnotic/instance_cache.rb
apnotic-1.5.0 lib/apnotic/instance_cache.rb
apnotic-1.4.1 lib/apnotic/instance_cache.rb
apnotic-1.4.0 lib/apnotic/instance_cache.rb
apnotic-1.3.1 lib/apnotic/instance_cache.rb
apnotic-1.3.0 lib/apnotic/instance_cache.rb
apnotic-1.2.0 lib/apnotic/instance_cache.rb