Sha256: 2dd53263d6a71b2ad018deebfa0e8c05c765801501428f832bbeaccdedd135c0

Contents?: true

Size: 1.86 KB

Versions: 34

Compression:

Stored size: 1.86 KB

Contents

module Sass
  module CacheStores
    # A backend for the Sass cache using the filesystem.
    class Filesystem < Base
      # The directory where the cached files will be stored.
      #
      # @return [String]
      attr_accessor :cache_location

      # @param cache_location [String] see \{#cache\_location}
      def initialize(cache_location)
        @cache_location = cache_location
      end

      # @see Base#\_retrieve
      def _retrieve(key, version, sha)
        return unless File.readable?(path_to(key))
        contents = nil
        File.open(path_to(key), "rb") do |f|
          if f.readline("\n").strip == version && f.readline("\n").strip == sha
            return f.read
          end
        end
        File.unlink path_to(key)
        nil
      rescue EOFError, TypeError, ArgumentError => e
        Sass::Util.sass_warn "Warning. Error encountered while reading cache #{path_to(key)}: #{e}"
      end

      # @see Base#\_store
      def _store(key, version, sha, contents)
        # return unless File.writable?(File.dirname(@cache_location))
        # return if File.exists?(@cache_location) && !File.writable?(@cache_location)
        compiled_filename = path_to(key)
        # return if File.exists?(File.dirname(compiled_filename)) && !File.writable?(File.dirname(compiled_filename))
        # return if File.exists?(compiled_filename) && !File.writable?(compiled_filename)
        FileUtils.mkdir_p(File.dirname(compiled_filename))
        File.open(compiled_filename, "wb") do |f|
          f.puts(version)
          f.puts(sha)
          f.write(contents)
        end
      rescue Errno::EACCES
        #pass
      end

      private

      # Returns the path to a file for the given key.
      #
      # @param key [String]
      # @return [String] The path to the cache file.
      def path_to(key)
        File.join(cache_location, key)
      end
    end
  end
end

Version data entries

34 entries across 34 versions & 3 rubygems

Version Path
haml_ejs-0.0.1 vendor/sass/lib/sass/cache_stores/filesystem.rb
haml-3.1.3 vendor/sass/lib/sass/cache_stores/filesystem.rb
sass-3.1.7 lib/sass/cache_stores/filesystem.rb
sass-3.1.6 lib/sass/cache_stores/filesystem.rb
sass-3.1.5 lib/sass/cache_stores/filesystem.rb
haml-3.2.0.alpha.8 vendor/sass/lib/sass/cache_stores/filesystem.rb
sass-3.1.4 lib/sass/cache_stores/filesystem.rb
sass-3.2.0.alpha.11 lib/sass/cache_stores/filesystem.rb
sass-3.1.3 lib/sass/cache_stores/filesystem.rb
sass-3.2.0.alpha.9 lib/sass/cache_stores/filesystem.rb
sass-3.2.0.alpha.8 lib/sass/cache_stores/filesystem.rb
haml-3.2.0.alpha.5 vendor/sass/lib/sass/cache_stores/filesystem.rb
haml-3.2.0.alpha.4 vendor/sass/lib/sass/cache_stores/filesystem.rb
haml-3.1.2 vendor/sass/lib/sass/cache_stores/filesystem.rb
sass-3.1.2 lib/sass/cache_stores/filesystem.rb
sass-3.2.0.alpha.7 lib/sass/cache_stores/filesystem.rb
sass-3.2.0.alpha.6 lib/sass/cache_stores/filesystem.rb
haml-3.2.0.alpha.3 vendor/sass/lib/sass/cache_stores/filesystem.rb
sass-3.2.0.alpha.4 lib/sass/cache_stores/filesystem.rb
sass-3.2.0.alpha.3 lib/sass/cache_stores/filesystem.rb