Sha256: ca76a51ae0a65a7c505312a110ee69dee0fed3f33624df357b7f0d370ee635e4

Contents?: true

Size: 939 Bytes

Versions: 92

Compression:

Stored size: 939 Bytes

Contents

module Sass
  module CacheStores
    # A meta-cache that chains multiple caches together.
    # Specifically:
    #
    # * All `#store`s are passed to all caches.
    # * `#retrieve`s are passed to each cache until one has a hit.
    # * When one cache has a hit, the value is `#store`d in all earlier caches.
    class Chain < Base
      # Create a new cache chaining the given caches.
      #
      # @param caches [Array<Sass::CacheStores::Base>] The caches to chain.
      def initialize(*caches)
        @caches = caches
      end

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

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

Version data entries

92 entries across 87 versions & 9 rubygems

Version Path
ish_lib_manager-0.0.1 test/dummy/vendor/bundle/ruby/2.3.0/gems/sass-3.2.19/lib/sass/cache_stores/chain.rb
solidus_backend-1.0.0.pre vendor/bundle/gems/sass-3.2.19/lib/sass/cache_stores/chain.rb
xass-0.1.0 lib/sass/cache_stores/chain.rb
oreorenasass-3.4.14 lib/sass/cache_stores/chain.rb
oreorenasass-3.4.13 lib/sass/cache_stores/chain.rb
oreorenasass-3.4.12 lib/sass/cache_stores/chain.rb
oreorenasass-3.4.11 lib/sass/cache_stores/chain.rb
oreorenasass-3.4.9 lib/sass/cache_stores/chain.rb
oreorenasass-3.4.7 lib/sass/cache_stores/chain.rb
oreorenasass-3.4.5 lib/sass/cache_stores/chain.rb
sadui-0.0.4 vendor/bundle/ruby/2.1.0/gems/sass-3.2.14/lib/sass/cache_stores/chain.rb
sadui-0.0.4 vendor/bundle/ruby/2.0.0/gems/sass-3.2.14/lib/sass/cache_stores/chain.rb
sass-3.2.19 lib/sass/cache_stores/chain.rb
sass-3.2.18 lib/sass/cache_stores/chain.rb
sass-3.2.17 lib/sass/cache_stores/chain.rb
sass-3.2.16 lib/sass/cache_stores/chain.rb
sass-3.2.15 lib/sass/cache_stores/chain.rb
sass-3.2.14 lib/sass/cache_stores/chain.rb
mango-0.8.0 vendor/bundler/ruby/2.1.0/gems/sass-3.2.13/lib/sass/cache_stores/chain.rb
mango-0.7.1 vendor/bundler/ruby/2.0.0/gems/sass-3.2.12/lib/sass/cache_stores/chain.rb