Class: Sass::CacheStores::Chain

Inherits:
Base
  • Object
show all
Defined in:
lib/sass/cache_stores/chain.rb

Overview

A meta-cache that chains multiple caches together. Specifically:

  • All #stores are passed to all caches.
  • #retrieves are passed to each cache until one has a hit.
  • When one cache has a hit, the value is #stored in all earlier caches.

Instance Method Summary collapse

Methods inherited from Base

#_retrieve, #_store, #key

Constructor Details

#initialize(*caches) ⇒ Chain

Create a new cache chaining the given caches.

Parameters:



13
14
15
# File 'lib/sass/cache_stores/chain.rb', line 13

def initialize(*caches)
  @caches = caches
end

Instance Method Details

#retrieve(key, sha)

See Also:



23
24
25
26
27
28
29
30
31
# File 'lib/sass/cache_stores/chain.rb', line 23

def retrieve(key, sha)
  @caches.each_with_index do |c, i|
    obj = c.retrieve(key, sha)
    next unless obj
    @caches[0...i].each {|prev| prev.store(key, sha, obj)}
    return obj
  end
  nil
end

#store(key, sha, obj)

See Also:



18
19
20
# File 'lib/sass/cache_stores/chain.rb', line 18

def store(key, sha, obj)
  @caches.each {|c| c.store(key, sha, obj)}
end