Sha256: d88fa7c10f24080619079006cc3501e96244547ff7eff590eca8fc4d94045328

Contents?: true

Size: 981 Bytes

Versions: 2

Compression:

Stored size: 981 Bytes

Contents

module CacheAdvance    
  class CacheSet
    attr_reader :named_caches
    attr_reader :qualifiers
    attr_reader :plugins
    
    def initialize(store)
      @store, @named_caches, @qualifiers, @plugins = store, {}, {}, []
    end
    
    def setup_complete
    end
    
    def apply(cache_name, request, options, &block)
      cache_name = cache_name.to_sym
      if CacheAdvance.caching_enabled
        named_cache = @named_caches[cache_name]
        raise UnknownNamedCacheException if named_cache.nil?
        named_cache.value_for(request, options, &block)
      else
        block.call
      end
    end
    
    def add_qualifier(name, proc)
      @qualifiers[name] = proc
    end
    
    def add_plugin(plugin)
      @plugins << plugin
    end
    
    def add_named_cache(name, options)
      name = name.to_sym
      @named_caches[name] = NamedCache.new(name, options, self, @store)
    end
    
    def define_caches
      yield Mapper.new(self)
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
cache_advance-2.0.1 lib/cache_advance/cache_set.rb
cache_advance-2.0.0 lib/cache_advance/cache_set.rb