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