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