class Sass::CacheStores::Filesystem
A backend for the Sass cache using the filesystem.
Attributes
cache_location[RW]
The directory where the cached files will be stored.
@return [String]
Public Class Methods
new(cache_location)
click to toggle source
@param #cache_location [String] see {#cache_location}
# File lib/sass/cache_stores/filesystem.rb, line 13 def initialize(cache_location) @cache_location = cache_location end
Public Instance Methods
_retrieve(key, version, sha)
click to toggle source
@see Base#_retrieve
# File lib/sass/cache_stores/filesystem.rb, line 18 def _retrieve(key, version, sha) return unless File.readable?(path_to(key)) begin 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) rescue Errno::ENOENT # Already deleted. Race condition? end nil rescue EOFError, TypeError, ArgumentError => e Sass::Util.sass_warn "Warning. Error encountered while reading cache #{path_to(key)}: #{e}" end
_store(key, version, sha, contents)
click to toggle source
@see Base#_store
# File lib/sass/cache_stores/filesystem.rb, line 36 def _store(key, version, sha, contents) compiled_filename = path_to(key) FileUtils.mkdir_p(File.dirname(compiled_filename)) Sass::Util.atomic_create_and_write_file(compiled_filename, 0600) do |f| f.puts(version) f.puts(sha) f.write(contents) end rescue Errno::EACCES # pass end
Private Instance Methods
path_to(key)
click to toggle source
Returns the path to a file for the given key.
@param key [String] @return [String] The path to the cache file.
# File lib/sass/cache_stores/filesystem.rb, line 54 def path_to(key) key = key.gsub(/[<>:\|?*%]/) {|c| "%%%03d" % Sass::Util.ord(c)} File.join(cache_location, key) end