Sha256: 3d6637c3f27297a84849a87a4d5e78a22b076a4b588036a40d2c61d4525fd71d

Contents?: true

Size: 933 Bytes

Versions: 492

Compression:

Stored size: 933 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 {|c| c.store(key, sha, obj)}
          return obj
        end
        nil
      end
    end
  end
end

Version data entries

492 entries across 211 versions & 9 rubygems

Version Path
classiccms-0.7.5 vendor/bundle/gems/haml-3.1.6/vendor/sass/lib/sass/cache_stores/chain.rb
classiccms-0.7.5 vendor/bundle/gems/haml-3.1.4/vendor/sass/lib/sass/cache_stores/chain.rb
classiccms-0.7.5 vendor/bundle/gems/sass-3.1.17/lib/sass/cache_stores/chain.rb
classiccms-0.7.5 vendor/bundle/gems/sass-3.1.18/lib/sass/cache_stores/chain.rb
classiccms-0.7.5 vendor/bundle/gems/sass-3.1.15/lib/sass/cache_stores/chain.rb
classiccms-0.7.5 vendor/bundle/gems/haml-3.1.5/vendor/sass/lib/sass/cache_stores/chain.rb
classiccms-0.7.5 vendor/bundle/gems/sass-3.1.19/lib/sass/cache_stores/chain.rb
classiccms-0.7.4 vendor/bundle/gems/sass-3.1.15/lib/sass/cache_stores/chain.rb
classiccms-0.7.4 vendor/bundle/gems/sass-3.1.17/lib/sass/cache_stores/chain.rb
classiccms-0.7.4 vendor/bundle/gems/haml-3.1.4/vendor/sass/lib/sass/cache_stores/chain.rb
classiccms-0.7.4 vendor/bundle/gems/sass-3.1.19/lib/sass/cache_stores/chain.rb
classiccms-0.7.4 vendor/bundle/gems/haml-3.1.5/vendor/sass/lib/sass/cache_stores/chain.rb
classiccms-0.7.4 vendor/bundle/gems/sass-3.1.18/lib/sass/cache_stores/chain.rb
classiccms-0.7.4 vendor/bundle/gems/haml-3.1.6/vendor/sass/lib/sass/cache_stores/chain.rb
classiccms-0.7.3 vendor/bundle/gems/sass-3.1.15/lib/sass/cache_stores/chain.rb
classiccms-0.7.3 vendor/bundle/gems/sass-3.1.17/lib/sass/cache_stores/chain.rb
classiccms-0.7.3 vendor/bundle/gems/haml-3.1.6/vendor/sass/lib/sass/cache_stores/chain.rb
classiccms-0.7.3 vendor/bundle/gems/sass-3.1.19/lib/sass/cache_stores/chain.rb
classiccms-0.7.3 vendor/bundle/gems/haml-3.1.5/vendor/sass/lib/sass/cache_stores/chain.rb
classiccms-0.7.3 vendor/bundle/gems/sass-3.1.18/lib/sass/cache_stores/chain.rb