class Sprockets::Base
‘Base` class for `Environment` and `CachedEnvironment`.
def [](*args, **options)
environment['application.js']
Preferred `find_asset` shorthand.
def [](*args, **options) find_asset(*args, **options) end
def cache=(cache)
setters. Either `get(key)`/`set(key, value)`,
The cache store must implement a pair of getters and
Set persistent cache store
def cache=(cache) @cache = Cache.new(cache, logger) end
def cached
def cached raise NotImplementedError end
def compress_from_root(uri)
def compress_from_root(uri) URITar.new(uri, self).compress end
def expand_from_root(uri)
def expand_from_root(uri) URITar.new(uri, self).expand end
def file_digest(path)
path - String filename or directory path.
Internal: Compute digest for path.
def file_digest(path) if stat = self.stat(path) # Caveat: Digests are cached by the path's current mtime. Its possible # for a files contents to have changed and its mtime to have been # negligently reset thus appearing as if the file hasn't changed on # disk. Also, the mtime is only read to the nearest second. It's # also possible the file was updated more than once in a given second. key = UnloadedAsset.new(path, self).file_digest_key(stat.mtime.to_i) cache.fetch(key) do self.stat_digest(path, stat) end end end
def find_all_linked_assets(*args)
def find_all_linked_assets(*args) return to_enum(__method__, *args) unless block_given? parent_asset = asset = find_asset(*args) return unless asset yield asset stack = asset.links.to_a linked_paths = {} while uri = stack.shift yield asset = load(uri) last_filename = linked_paths[asset.logical_path] if last_filename && last_filename != asset.filename raise DoubleLinkError.new( parent_filename: parent_asset.filename, last_filename: last_filename, logical_path: asset.logical_path, filename: asset.filename ) end linked_paths[asset.logical_path] = asset.filename stack = asset.links.to_a + stack end nil end
def find_asset(*args, **options)
def find_asset(*args, **options) uri, _ = resolve(*args, **options) if uri load(uri) end end
def find_asset!(*args)
Find asset by logical path or expanded path.
def find_asset!(*args) uri, _ = resolve!(*args) if uri load(uri) end end
def inspect
def inspect "#<#{self.class}:0x#{object_id.to_s(16)} " + "root=#{root.to_s.inspect}, " + "paths=#{paths.inspect}>" end