Class: Sass::CacheStores::Base Abstract
- Inherits:
- Object
- Object
- Sass::CacheStores::Base
- Defined in:
- /Users/ceppstei/Projects/sass-lang/.sass/lib/sass/cache_stores/base.rb
Overview
An abstract base class for backends for the Sass cache. Any key-value store can act as such a backend; it just needs to implement the #_store and #_retrieve methods.
To use a cache store with Sass, use the :cache_store
option.
Direct Known Subclasses
Instance Method Summary (collapse)
- - (String, NilClass) _retrieve(key, version, sha)
Retrieved cached contents.
- - _store(key, version, sha, contents)
Store cached contents for later retrieval Must be implemented by all CacheStore subclasses.
- - key(sass_dirname, sass_basename)
Return the key for the sass file.
- - (Object) retrieve(key, sha)
Retrieve a Tree::RootNode.
- - store(key, sha, root)
Store a Tree::RootNode.
Instance Method Details
- (String, NilClass) _retrieve(key, version, sha)
Retrieved cached contents. Must be implemented by all subclasses.
Note: if the key exists but the sha or version have changed, then the key may be deleted by the cache store, if it wants to do so.
41 42 43 | # File '/Users/ceppstei/Projects/sass-lang/.sass/lib/sass/cache_stores/base.rb', line 41
def _retrieve(key, version, sha)
raise "#{self.class} must implement #_retrieve."
end |
- _store(key, version, sha, contents)
Store cached contents for later retrieval Must be implemented by all CacheStore subclasses
Note: cache contents contain binary data.
24 25 26 | # File '/Users/ceppstei/Projects/sass-lang/.sass/lib/sass/cache_stores/base.rb', line 24
def _store(key, version, sha, contents)
raise "#{self.class} must implement #_store."
end |
- key(sass_dirname, sass_basename)
Return the key for the sass file.
The (sass_dirname, sass_basename)
pair should uniquely identify the Sass document, but otherwise there are no restrictions on their content.
81 82 83 84 85 | # File '/Users/ceppstei/Projects/sass-lang/.sass/lib/sass/cache_stores/base.rb', line 81
def key(sass_dirname, sass_basename)
dir = Digest::SHA1.hexdigest(sass_dirname)
filename = "#{sass_basename}c"
"#{dir}/#{filename}"
end |
- (Object) retrieve(key, sha)
Retrieve a Tree::RootNode.
62 63 64 65 66 67 68 | # File '/Users/ceppstei/Projects/sass-lang/.sass/lib/sass/cache_stores/base.rb', line 62
def retrieve(key, sha)
contents = _retrieve(key, Sass::VERSION, sha)
Marshal.load(contents) if contents
rescue EOFError, TypeError, ArgumentError, LoadError => e
Sass::Util.sass_warn "Warning. Error encountered while reading cache #{path_to(key)}: #{e}"
nil
end |
- store(key, sha, root)
Store a Tree::RootNode.
50 51 52 53 54 55 | # File '/Users/ceppstei/Projects/sass-lang/.sass/lib/sass/cache_stores/base.rb', line 50
def store(key, sha, root)
_store(key, Sass::VERSION, sha, Marshal.dump(root))
rescue TypeError, LoadError => e
Sass::Util.sass_warn "Warning. Error encountered while saving cache #{path_to(key)}: #{e}"
nil
end |