class TimeHash

Constants

ConfusionError

Attributes

automatic_expiration[RW]
times[R]

Public Class Methods

new(automatic_expiration = true) click to toggle source
# File lib/time-hash.rb, line 8
def initialize(automatic_expiration = true)
  @automatic_expiration = automatic_expiration
  @times = {}
  @internal = {}
end

Public Instance Methods

[]=(*args) click to toggle source
# File lib/time-hash.rb, line 39
def []=(*args)
  raise(ConfusionError,
        "Don't use standard key-value assignment with TimeHashes, please.")
end
expire!() click to toggle source
# File lib/time-hash.rb, line 14
def expire!
  @times.clone.each do |key, times|
    if expired?(key)
      @internal.delete(key)
      @times.delete(key)
    end
  end
  self
end
expired?(key) click to toggle source
# File lib/time-hash.rb, line 24
def expired?(key)
  return true unless @times.has_key?(key)
  time, ttl = @times[key]
  Time.now - time > ttl
end
put(key, value, ttl) click to toggle source
# File lib/time-hash.rb, line 30
def put(key, value, ttl) # ms
  expire!
  response = (@internal[key] = value)
  @times[key] = [Time.now, ttl]
  response
end