Class: Sprockets::Base
Relationships & Source Files | |
Extension / Inclusion / Inheritance Descendants | |
Subclasses:
|
|
Super Chains via Extension / Inclusion / Inheritance | |
Instance Chain:
|
|
Inherits: | Object |
Defined in: | lib/sprockets/base.rb |
Overview
Base
class for Environment
and CachedEnvironment
.
Constant Summary
SourceMapUtils
- Included
BASE64_DIGITS, BASE64_VALUES, VLQ_BASE, VLQ_BASE_MASK, VLQ_BASE_SHIFT, VLQ_CONTINUATION_BIT
DigestUtils
- Included
ADD_VALUE_TO_DIGEST, DIGEST_SIZES, HASH_ALGORITHMS
PathUtils
- Included
Utils
- Included
MODULE_INCLUDE_MUTEX, WHITESPACE_ORDINALS
ProcessorUtils
- Included
VALID_METADATA_COMPOUND_TYPES, VALID_METADATA_COMPOUND_TYPES_HASH, VALID_METADATA_TYPES, VALID_METADATA_VALUE_TYPES, VALID_METADATA_VALUE_TYPES_HASH
Server
- Included
ALLOWED_REQUEST_METHODS, VARY, X_CASCADE
Bower
- Included
Instance Attribute Summary
-
#cache
rw
Get persistent cache store.
-
#cache=(cache)
rw
Set persistent cache store.
Configuration
- Included
#config, #config=, | |
#context_class | This class maybe mutated and mixed in with custom helpers. |
#digest_class | Public: Returns a |
#digest_class= | Deprecated: Assign a |
#logger | Get and set |
#version | The |
#version= | Assign an environment version. |
Paths
- Included
#root | Returns |
#root= | Internal: Change Environment root. |
Exporting
- Included
#export_concurrent | Public: Checks if concurrent exporting is allowed. |
#export_concurrent= | Public: Enable or disable the concurrently exporting files. |
Compressing
- Included
#css_compressor | Return CSS compressor or nil if none is set. |
#css_compressor= | Assign a compressor to run on |
#gzip= | Public: Enable or disable the creation of Gzip files. |
#gzip? | Public: Checks if Gzip is enabled. |
#js_compressor | Return JS compressor or nil if none is set. |
#js_compressor= | Assign a compressor to run on |
#skip_gzip? | Public: Checks if Gzip is disabled. |
Instance Method Summary
-
#[](*args, **options)
Preferred #find_asset shorthand.
-
#cached
(also: #index)
Return an
CachedEnvironment
. - #compress_from_root(uri)
- #expand_from_root(uri)
-
#file_digest(path)
Internal: Compute digest for path.
- #find_all_linked_assets(*args) {|asset| ... }
-
#find_asset(*args, **options)
Find asset by logical path or expanded path.
-
#find_asset!(*args)
Find asset by logical path or expanded path.
-
#index
Alias for #cached.
-
#inspect
Pretty inspect.
Npm
- Included
#read_package_directives | Internal: Read package.json’s main and style directives. |
#resolve_alternates | Internal: Override resolve_alternates to install package.json behavior. |
Bower
- Included
#read_bower_main | Internal: Read bower.json’s main directive. |
#resolve_alternates | Internal: Override resolve_alternates to install bower.json behavior. |
Loader
- Included
#load | Public: Load Asset by |
#asset_from_cache | Internal: Load asset hash from cache. |
#compress_key_from_hash, #expand_key_from_hash, | |
#fetch_asset_from_dependency_cache | Internal: Retrieves an asset based on its digest. |
#load_from_unloaded | Internal: Loads an asset and saves it to cache. |
#resolve_dependencies | Internal: |
#store_asset | Internal: Save a given asset to the cache. |
Resolve
- Included
#resolve | Public: Find Asset URI for given a logical path by searching the environment’s load paths. |
#resolve! | Public: Same as resolve() but raises a |
Server
- Included
#call |
|
#bad_request_response | Returns a 400 Forbidden response tuple. |
#cache_headers, | |
#css_exception_response | Returns a CSS response that hides all elements on the page and displays the exception. |
#escape_css_content | Escape special characters for use inside a CSS content(“…”) string. |
#forbidden_request?, | |
#forbidden_response | Returns a 403 Forbidden response tuple. |
#head_request?, #headers, | |
#javascript_exception_response | Returns a JavaScript response that re-throws a Ruby exception in the browser. |
#method_not_allowed_response, | |
#not_found_response | Returns a 404 Not Found response tuple. |
#not_modified_response | Returns a 304 Not Modified response tuple. |
#ok_response | Returns a 200 OK response tuple. |
#path_fingerprint | Gets ETag fingerprint. |
#precondition_failed_response |
Configuration
- Included
Paths
- Included
#append_path | Append a |
#clear_paths | Clear all paths and start fresh. |
#each_file | Public: Iterate over every file under all load paths. |
#paths | Returns an |
#prepend_path | Prepend a |
Mime
- Included
#mime_exts | Internal: Mapping of MIME extension Strings to MIME type Strings. |
#mime_type_charset_detecter | Internal: Get detecter function for MIME type. |
#mime_types | Public: Mapping of MIME type Strings to properties Hash. |
#read_file | Public: Read file on disk with MIME type specific encoding. |
#register_mime_type | Public: Register a new mime type. |
Transformers
- Included
#compose_transformers | Internal: Compose multiple transformer steps into a single processor function. |
#expand_transform_accepts | Internal: Expand accept type list to include possible transformed types. |
#register_transformer | Public: Register a transformer from and to a mime type. |
#register_transformer_suffix | Internal: Register transformer for existing type adding a suffix. |
#resolve_transform_type | Internal: |
#transformers | Public: Two level mapping of a source mime type to a target mime type. |
#compose_transformer_list, #compute_transformers! |
HTTPUtils
- Included
#find_best_mime_type_match | Internal: Find the best qvalue match from an Array of available mime type options. |
#find_best_q_match | Internal: Find the best qvalue match from an Array of available options. |
#find_mime_type_matches | Internal: Find the all qvalue match from an Array of available mime type options. |
#find_q_matches | Internal: Find all qvalue matches from an Array of available options. |
#match_mime_type? | Public: Test mime type against mime range. |
#match_mime_type_keys | Public: Return values from Hash where the key matches the mime type. |
#parse_q_values | Internal: Parse Accept header quality values. |
Processing
- Included
#bundle_processors |
|
#pipelines, | |
#postprocessors | Postprocessors are ran after |
#preprocessors |
|
#processors | Alias for Processing#preprocessors. |
#register_bundle_metadata_reducer | Public: Register bundle metadata reducer function. |
#register_bundle_processor | Registers a new |
#register_pipeline | Registers a pipeline that will be called by |
#register_postprocessor | Registers a new Postprocessor |
#register_preprocessor | Registers a new Preprocessor |
#register_processor | Alias for Processing#register_preprocessor. |
#unregister_bundle_processor | Remove Bundle Processor |
#unregister_postprocessor | Remove Postprocessor |
#unregister_preprocessor | Remove Preprocessor |
#unregister_processor | Alias for Processing#unregister_preprocessor. |
#register_config_processor, #unregister_config_processor |
ProcessorUtils
- Included
#call_processor | Public: Invoke processor. |
#call_processors | Public: Invoke list of processors in right to left order. |
#compose_processors | Public: Compose processors in right to left order. |
#processor_cache_key | Internal: Get processor defined cached key. |
#processors_cache_keys | Internal: Get combined cache keys for set of processors. |
#validate_processor_result! | Internal: Validate returned result of calling a processor pipeline and raise a friendly user error message. |
Exporting
- Included
#exporters |
|
#register_exporter | Public: Registers a new Exporter |
#unregister_exporter | Public: Remove Exporting processor |
Compressing
- Included
#compressors, | |
#register_compressor | Public: Register a new compressor |
Dependencies
- Included
#add_dependency | Public: Add environmental dependency inherited by all assets. |
#depend_on | Alias for Dependencies#add_dependency. |
#dependencies | Public: Default set of dependency URIs for assets. |
#dependency_resolvers | Public: Mapping dependency schemes to resolver functions. |
#register_dependency_resolver | Public: Register new dependency URI resolver. |
#resolve_dependency | Internal: |
Utils
- Included
#concat_javascript_sources | Internal: Accumulate asset source to buffer and append a trailing semicolon if necessary. |
#dfs | Internal: Post-order Depth-First search algorithm. |
#dfs_paths | Internal: Post-order Depth-First search algorithm that gathers all paths along the way. |
#duplicable? | Internal: Check if object can safely be .dup’d. |
#hash_reassoc | Internal: Duplicate and store key/value on new frozen hash. |
#hash_reassoc1 | Internal: Duplicate and store key/value on new frozen hash. |
#module_include | Internal: Inject into target module for the duration of the block. |
#string_end_with_semicolon? | Internal: Check if string has a trailing semicolon. |
PathDependencyUtils
- Included
#entries_with_dependencies | Internal: List directory entries and return a set of dependencies that would invalid the cached return result. |
#stat_directory_with_dependencies | Internal: List directory filenames and associated Stats under a directory. |
#stat_sorted_tree_with_dependencies | Internal: List directory filenames and associated Stats under an entire directory tree. |
URIUtils
- Included
#build_asset_uri | Internal: Build Asset URI. |
#build_file_digest_uri | Internal: Build file-digest dependency URI. |
#encode_uri_query_params | Internal: Serialize hash of params into query string. |
#join_file_uri | Internal: Join file: URI component parts into String. |
#join_uri | Internal: Join URI component parts into String. |
#parse_asset_uri | Internal: Parse Asset URI. |
#parse_file_digest_uri | Internal: Parse file-digest dependency URI. |
#parse_uri_query_params | Internal: Parse query string into hash of params. |
#split_file_uri | Internal: Parse file: URI into component parts. |
#split_uri | Internal: Parse URI into component parts. |
#valid_asset_uri? | Internal: Check if String is a valid |
PathDigestUtils
- Included
#file_digest | Internal: Compute digest for path. |
#files_digest | Internal: Compute digest for a set of paths. |
#stat_digest | Internal: Compute digest for file stat. |
PathUtils
- Included
#absolute_path? | On Windows, ALT_SEPARATOR is \ Delegate to Pathname since the logic gets complex. |
#atomic_write | Public: Write to a file atomically. |
#directory? | Public: Like |
#entries | Public: A version of |
#file? | Public: Like |
#find_matching_path_for_extensions | Internal: Match paths in a directory against available extensions. |
#find_upwards | Internal: Find target basename checking upwards from path. |
#join | Public: Joins path to base path. |
#match_path_extname | Internal: Match path extnames against available extensions. |
#path_extnames | Internal: Get path’s extensions. |
#path_parents | Internal: Returns all parents for path. |
#paths_split | Internal: Detect root path and base for file in a set of paths. |
#relative_path? | Public: Check if path is explicitly relative. |
#relative_path_from | Public: Get relative path from |
#set_pipeline | Public: Sets pipeline for path. |
#split_subpath | Internal: Get relative path for root path and subpath. |
#stat | Public: Like |
#stat_directory | Public: Stat all the files under a directory. |
#stat_sorted_tree | Public: Recursive stat all the files under a directory in alphabetical order. |
#stat_tree | Public: Recursive stat all the files under a directory. |
DigestUtils
- Included
#already_digested? | Internal: Checks an asset name for a valid digest. |
#detect_digest_class | Internal: Detect digest class hash algorithm for digest bytes. |
#digest | Internal: Generate a hexdigest for a nested JSON serializable object. |
#digest_class | Internal: Default digest class. |
#hexdigest | Internal: Generate a hexdigest for a nested JSON serializable object. |
#hexdigest_integrity_uri | Public: Generate hash for use in the |
#integrity_uri | Public: Generate hash for use in the |
#pack_base64digest | Internal: Pack a binary digest to a base64 encoded string. |
#pack_hexdigest | Internal: Pack a binary digest to a hex encoded string. |
#pack_urlsafe_base64digest | Internal: Pack a binary digest to a urlsafe base64 encoded string. |
#unpack_hexdigest | Internal: Unpack a hex encoded digest string into binary bytes. |
#build_digest |
SourceMapUtils
- Included
#bsearch_mappings | Public: Search Array of mappings for closest offset. |
#combine_source_maps | Public: Combine two separate source map transformations into a single mapping. |
#compare_source_offsets | Public: Compare two source map offsets. |
#concat_source_maps | Public: Concatenate two source maps. |
#decode_source_map | Public: Decompress source map. |
#decode_vlq_mappings | Public: Decode VLQ mappings and match up sources and symbol names. |
#encode_source_map | Public: Compress source map. |
#encode_vlq_mappings | Public: Encode mappings Hash into a VLQ encoded String. |
#format_source_map | Public: Transpose source maps into a standard format. |
#make_index_map | Public: Converts source map to index map. |
#vlq_decode | Public: Decode a VLQ string. |
#vlq_decode_mappings | Public: Decode a VLQ string into mapping numbers. |
#vlq_encode | Public: Encode a list of numbers into a compact VLQ string. |
#vlq_encode_mappings | Public: Encode a mapping array into a compact VLQ string. |
Instance Attribute Details
#cache (rw)
Get persistent cache store
# File 'lib/sprockets/base.rb', line 41
attr_reader :cache
#cache=(cache) (rw)
Set persistent cache store
The cache store must implement a pair of getters and setters. Either ‘get(key)`/`set(key, value)`, `[key]`/`=value`, `read(key)`/`write(key, value)`.
Instance Method Details
#[](*args, **options)
Preferred #find_asset shorthand.
environment['application.js']
# File 'lib/sprockets/base.rb', line 118
def [](*args, ** ) find_asset(*args, ** ) end
#cached Also known as: #index
Return an CachedEnvironment
. Must be implemented by the subclass.
# File 'lib/sprockets/base.rb', line 53
def cached raise NotImplementedError end
#compress_from_root(uri)
[ GitHub ]#expand_from_root(uri)
[ GitHub ]#file_digest(path)
Internal: Compute digest for path.
path - String filename or directory path.
Returns a String digest or nil.
# File 'lib/sprockets/base.rb', line 63
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
#find_all_linked_assets(*args) {|asset| ... }
# File 'lib/sprockets/base.rb', line 85
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
#find_asset(*args, **options)
Find asset by logical path or expanded path.
# File 'lib/sprockets/base.rb', line 78
def find_asset(*args, ** ) uri, _ = resolve(*args, ** ) if uri load(uri) end end
#find_asset!(*args)
Find asset by logical path or expanded path.
If the asset is not found an error will be raised.
# File 'lib/sprockets/base.rb', line 125
def find_asset!(*args) uri, _ = resolve!(*args) if uri load(uri) end end
#index
Alias for #cached.
# File 'lib/sprockets/base.rb', line 56
alias_method :index, :cached
#inspect
Pretty inspect
# File 'lib/sprockets/base.rb', line 133
def inspect "#<#{self.class}:0x#{object_id.to_s(16)} " + "root=#{root.to_s.inspect}, " + "paths=#{paths.inspect}>" end