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)

`[key]`/`[key]=value`, `read(key)`/`write(key, value)`.
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

Return an `CachedEnvironment`. Must be implemented by the subclass.
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)

Returns a String digest or nil.

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)

Find asset by logical path or expanded path.
def find_asset(*args, **options)
  uri, _ = resolve(*args, **options)
  if uri
    load(uri)
  end
end

def find_asset!(*args)

If the asset is not found an error will be raised.

Find asset by logical path or expanded path.
def find_asset!(*args)
  uri, _ = resolve!(*args)
  if uri
    load(uri)
  end
end

def inspect

Pretty inspect
def inspect
  "#<#{self.class}:0x#{object_id.to_s(16)} " +
    "root=#{root.to_s.inspect}, " +
    "paths=#{paths.inspect}>"
end