module Workbook::Modules::Cache

Adds simple caching

Attributes

debug_cache[RW]

Public Instance Methods

cache_valid_from() click to toggle source

Return valid cache time, if caching is enabled, otherwise calls invalidate_cache! @return [Time] Timestamp after which cache is valid

# File lib/workbook/modules/cache.rb, line 19
def cache_valid_from
  if caching_enabled?
    @cache_valid_from ||= Time.now
  else
    invalidate_cache!
  end
  @cache_valid_from
end
caching_enabled?() click to toggle source

Caching enabled? @return [Boolean]

# File lib/workbook/modules/cache.rb, line 13
def caching_enabled?
  Workbook.caching_enabled?
end
fetch_cache(key, expires=nil) { || ... } click to toggle source
# File lib/workbook/modules/cache.rb, line 41
def fetch_cache(key, expires=nil)
  @cache ||= {}
  if valid_cache_key?(key, expires)
    return @cache[key][:value]
  else
    @cache[key] = {
      value: yield,
      inserted_at: Time.now
    }
  end
  return @cache[key][:value]
end
invalidate_cache!() click to toggle source

Invalidate all caches on this instance, and reset @return [Time] Timestamp after which cache is valid (=current time, hence everything stored before is invalid)

# File lib/workbook/modules/cache.rb, line 30
def invalidate_cache!
  @cache_valid_from = Time.now
end
valid_cache_key?(key, expires=nil) click to toggle source

Check if currently stored key is available and still valid @return [Boolean]

# File lib/workbook/modules/cache.rb, line 36
def valid_cache_key?(key, expires=nil)
  cache_valid_from
  rv = (@cache[key] and (@cache[key][:inserted_at] > cache_valid_from) and (expires.nil? or @cache[key][:inserted_at] < expires)) ? true : false
  rv
end