module Aerogel::Cache
Public Class Methods
cache()
click to toggle source
Returns cache structure.
# File lib/aerogel/core/cache.rb, line 32 def self.cache @cache ||= initialize_cache end
cache_key( args )
click to toggle source
Calculates a cache key for a single object, or a compound cache key for a list of objects.
# File lib/aerogel/core/cache.rb, line 12 def self.cache_key( args ) if Array === args args.flatten.map{|o| object_to_cache_key o }.join("/") else object_to_cache_key args end end
cacheable( *args ) { |key| ... }
click to toggle source
Retrieves cache entry by calculated cache key of args
, or runs given block
, stores its result in the cache and returns its value.
# File lib/aerogel/core/cache.rb, line 23 def self.cacheable( *args, &block ) key = cache_key args cache.getset key do yield key end end
clear!()
click to toggle source
Clears cache completely.
# File lib/aerogel/core/cache.rb, line 44 def self.clear! @cache.clear end
keys()
click to toggle source
Returns list of stored keys.
# File lib/aerogel/core/cache.rb, line 38 def self.keys cache.to_a.map(&:first) end
Private Class Methods
initialize_cache()
click to toggle source
Creates LRU cache with maximum objects count specified by config value ‘aerogel.cache.max_size’.
# File lib/aerogel/core/cache.rb, line 53 def self.initialize_cache max_size = Aerogel.config.aerogel.cache.max_size! rescue 1000 LruRedux::Cache.new( max_size ) end
object_to_cache_key( object )
click to toggle source
Calculates a cache key for given object
.
If the object responds to :cache_key, its result is returned, otherwise cache key is the object converted to String.
# File lib/aerogel/core/cache.rb, line 63 def self.object_to_cache_key( object ) if object.respond_to? :cache_key object.cache_key else object.to_s end end