Class: Sprockets::Base
- Inherits:
-
Object
- Object
- Sprockets::Base
- Includes:
- Bower, Configuration, DigestUtils, Loader, Npm, PathDependencyUtils, PathDigestUtils, PathUtils, Resolve, Server, SourceMapUtils
- Defined in:
- lib/sprockets/base.rb
Overview
Base class for Environment and CachedEnvironment.
Direct Known Subclasses
Constant Summary
Constants included from Bower
Sprockets::Bower::POSSIBLE_BOWER_JSONS
Constants included from PathUtils
PathUtils::RELATIVE_PATH_PATTERN, PathUtils::SEPARATOR_PATTERN
Constants included from ProcessorUtils
ProcessorUtils::VALID_METADATA_COMPOUND_TYPES, ProcessorUtils::VALID_METADATA_COMPOUND_TYPES_HASH, ProcessorUtils::VALID_METADATA_TYPES, ProcessorUtils::VALID_METADATA_VALUE_TYPES, ProcessorUtils::VALID_METADATA_VALUE_TYPES_HASH
Constants included from DigestUtils
DigestUtils::DIGEST_SIZES, DigestUtils::HASH_ALGORITHMS
Constants included from Server
Server::ALLOWED_REQUEST_METHODS, Server::VARY, Server::X_CASCADE
Constants included from SourceMapUtils
SourceMapUtils::BASE64_DIGITS, SourceMapUtils::BASE64_VALUES, SourceMapUtils::VLQ_BASE, SourceMapUtils::VLQ_BASE_MASK, SourceMapUtils::VLQ_BASE_SHIFT, SourceMapUtils::VLQ_CONTINUATION_BIT
Instance Attribute Summary collapse
-
#cache ⇒ Object
Get persistent cache store.
-
#ignore_mtime ⇒ Object
By default sprockets tries to quickly revalidate the cache for a source file by comparing its last modified time.
Attributes included from Configuration
#config, #context_class, #logger
Instance Method Summary collapse
-
#[](*args, **options) ⇒ Object
Preferred
find_assetshorthand. -
#cached ⇒ Object
(also: #index)
Return an
CachedEnvironment. - #compress_from_root(uri) ⇒ Object
- #expand_from_root(uri) ⇒ Object
-
#file_digest(path) ⇒ Object
Internal: Compute digest for path.
- #find_all_linked_assets(*args) {|asset| ... } ⇒ Object
-
#find_asset(*args, **options) ⇒ Object
Find asset by logical path or expanded path.
-
#find_asset!(*args) ⇒ Object
Find asset by logical path or expanded path.
-
#inspect ⇒ Object
Pretty inspect.
Methods included from Npm
#read_package_directives, #resolve_alternates
Methods included from Bower
#read_bower_main, #resolve_alternates
Methods included from Resolve
Methods included from HTTPUtils
#find_best_mime_type_match, #find_best_q_match, #find_mime_type_matches, #find_q_matches, #match_mime_type?, #match_mime_type_keys, #parse_q_values
Methods included from PathDependencyUtils
#entries_with_dependencies, #stat_directory_with_dependencies, #stat_sorted_tree_with_dependencies
Methods included from URIUtils
#build_asset_uri, #build_file_digest_uri, #encode_uri_query_params, #join_file_uri, #join_uri, #parse_asset_uri, #parse_file_digest_uri, #parse_uri_query_params, #split_file_uri, #split_uri, #valid_asset_uri?
Methods included from PathUtils
#absolute_path?, #atomic_write, #directory?, #entries, #file?, #find_matching_path_for_extensions, #find_upwards, #join, #match_path_extname, #path_extnames, #path_parents, #paths_split, #relative_path?, #relative_path_from, #set_pipeline, #split_subpath, #stat, #stat_directory, #stat_sorted_tree, #stat_tree
Methods included from Loader
Methods included from Mime
#mime_exts, #mime_type_charset_detecter, #mime_types, #read_file, #register_mime_type
Methods included from Utils
#concat_javascript_sources, #dfs, #dfs_paths, #duplicable?, #hash_reassoc, #hash_reassoc1, #module_include, #string_end_with_semicolon?
Methods included from Processing
#bundle_processors, #pipelines, #postprocessors, #preprocessors, #register_bundle_metadata_reducer, #register_bundle_processor, #register_pipeline, #register_postprocessor, #register_preprocessor, #unregister_bundle_processor, #unregister_postprocessor, #unregister_preprocessor
Methods included from ProcessorUtils
#call_processor, #call_processors, #compose_processors, #processor_cache_key, #processors_cache_keys, #validate_processor_result!
Methods included from Transformers
#compose_transformers, #expand_transform_accepts, #register_transformer, #register_transformer_suffix, #resolve_transform_type, #transformers
Methods included from DigestUtils
#already_digested?, #detect_digest_class, #digest, #digest_class, #hexdigest, #hexdigest_integrity_uri, #integrity_uri, #pack_base64digest, #pack_hexdigest, #pack_urlsafe_base64digest, #unpack_hexdigest
Methods included from Server
Methods included from Configuration
#digest_class, #digest_class=, #initialize_configuration, #version, #version=
Methods included from Paths
#append_path, #clear_paths, #each_file, #paths, #prepend_path, #root
Methods included from Exporting
#export_concurrent, #export_concurrent=, #exporters, #register_exporter, #unregister_exporter
Methods included from Compressing
#compressors, #css_compressor, #css_compressor=, #gzip=, #gzip?, #js_compressor, #js_compressor=, #register_compressor, #skip_gzip?
Methods included from Dependencies
#add_dependency, #dependencies, #dependency_resolvers, #register_dependency_resolver, #resolve_dependency
Methods included from PathDigestUtils
Methods included from SourceMapUtils
#bsearch_mappings, #combine_source_maps, #compare_source_offsets, #concat_source_maps, #decode_source_map, #decode_vlq_mappings, #encode_source_map, #encode_vlq_mappings, #format_source_map, #make_index_map, #vlq_decode, #vlq_decode_mappings, #vlq_encode, #vlq_encode_mappings
Instance Attribute Details
#cache ⇒ Object
Get persistent cache store
41 42 43 |
# File 'lib/sprockets/base.rb', line 41 def cache @cache end |
#ignore_mtime ⇒ Object
By default sprockets tries to quickly revalidate the cache for a source file by comparing its last modified time. This is efficient in development, but in some CI or producton environments where the source files are restored from version control, the last modified time tend to be somewhat random, and checking it is just needless overhead.
63 64 65 |
# File 'lib/sprockets/base.rb', line 63 def ignore_mtime @ignore_mtime end |
Instance Method Details
#[](*args, **options) ⇒ Object
Preferred find_asset shorthand.
environment['application.js']
129 130 131 |
# File 'lib/sprockets/base.rb', line 129 def [](*args, **) find_asset(*args, **) end |
#cached ⇒ Object Also known as: index
Return an CachedEnvironment. Must be implemented by the subclass.
53 54 55 |
# File 'lib/sprockets/base.rb', line 53 def cached raise NotImplementedError end |
#compress_from_root(uri) ⇒ Object
150 151 152 |
# File 'lib/sprockets/base.rb', line 150 def compress_from_root(uri) URITar.new(uri, self).compress end |
#expand_from_root(uri) ⇒ Object
154 155 156 |
# File 'lib/sprockets/base.rb', line 154 def (uri) URITar.new(uri, self). end |
#file_digest(path) ⇒ Object
Internal: Compute digest for path.
path - String filename or directory path.
Returns a String digest or nil.
70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 |
# File 'lib/sprockets/base.rb', line 70 def file_digest(path) if stat = self.stat(path) if ignore_mtime self.stat_digest(path, stat) else # 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 end |
#find_all_linked_assets(*args) {|asset| ... } ⇒ Object
96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 |
# File 'lib/sprockets/base.rb', line 96 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) ⇒ Object
Find asset by logical path or expanded path.
89 90 91 92 93 94 |
# File 'lib/sprockets/base.rb', line 89 def find_asset(*args, **) uri, _ = resolve(*args, **) if uri load(uri) end end |
#find_asset!(*args) ⇒ Object
Find asset by logical path or expanded path.
If the asset is not found an error will be raised.
136 137 138 139 140 141 |
# File 'lib/sprockets/base.rb', line 136 def find_asset!(*args) uri, _ = resolve!(*args) if uri load(uri) end end |
#inspect ⇒ Object
Pretty inspect
144 145 146 147 148 |
# File 'lib/sprockets/base.rb', line 144 def inspect "#<#{self.class}:0x#{object_id.to_s(16)} " + "root=#{root.to_s.inspect}, " + "paths=#{paths.inspect}>" end |