Class Sass::Plugin::StalenessChecker
In: lib/sass/plugin/staleness_checker.rb
Parent: Object

The class handles `.s[ca]ss` file staleness checks via their mtime timestamps.

To speed things up two level of caches are employed:

  • A class-level dependency cache which stores @import paths for each file. This is a long-lived cache that is reused by every StalenessChecker instance.
  • Three short-lived instance-level caches, one for file mtimes, one for whether a file is stale during this particular run. and one for the parse tree for a file. These are only used by a single StalenessChecker instance.

Usage:

  • For a one-off staleness check of a single `.s[ca]ss` file, the class-level {stylesheet_needs_update?} method should be used.
  • For a series of staleness checks (e.g. checking all files for staleness) a StalenessChecker instance should be created, and the instance-level \{stylesheet_needs_update?} method should be used. the caches should make the whole process significantly faster. WARNING: It is important not to retain the instance for too long, as its instance-level caches are never explicitly expired.

Methods

Attributes

dependencies_cache  [RW]  TODO: attach this to a compiler instance. @private
dependency_cache_mutex  [R] 

Public Class methods

Creates a new StalenessChecker for checking the staleness of several stylesheets at once.

@param options [{Symbol => Object}]

  See {file:SASS_REFERENCE.md#sass_options the Sass options documentation}.

Returns whether a Sass or SCSS stylesheet has been modified since a given time.

The distinction between this method and the instance-level \{stylesheet_modified_since?} is that the instance method preserves mtime and stale-dependency caches, so it‘s better to use when checking multiple stylesheets at once.

@param template_file [String] The location of the Sass or SCSS template. @param mtime [Time] The modification time to check against. @param importer [Sass::Importers::Base] The importer used to locate the stylesheet.

  Defaults to the filesystem importer.

@return [Boolean] Whether the stylesheet has been modified.

Returns whether or not a given CSS file is out of date and needs to be regenerated.

The distinction between this method and the instance-level \{stylesheet_needs_update?} is that the instance method preserves mtime and stale-dependency caches, so it‘s better to use when checking multiple stylesheets at once.

@param css_file [String] The location of the CSS file to check. @param template_file [String] The location of the Sass or SCSS template

  that is compiled to `css_file`.

@return [Boolean] Whether the stylesheet needs to be updated.

Public Instance methods

Returns whether a Sass or SCSS stylesheet has been modified since a given time.

@param template_file [String] The location of the Sass or SCSS template. @param mtime [Time] The modification time to check against. @param importer [Sass::Importers::Base] The importer used to locate the stylesheet.

  Defaults to the filesystem importer.

@return [Boolean] Whether the stylesheet has been modified.

Returns whether or not a given CSS file is out of date and needs to be regenerated.

@param css_file [String] The location of the CSS file to check. @param template_file [String] The location of the Sass or SCSS template

  that is compiled to `css_file`.

@return [Boolean] Whether the stylesheet needs to be updated.

[Validate]