Class: Sprockets::Index
Overview
Index is a special cached version of Environment.
The expection is that all of its file system methods are cached
for the instances lifetime. This makes Index much faster. This
behavior is ideal in production environments where the file system
is immutable.
Index should not be initialized directly. Instead use
Environment#index.
Instance Attribute Summary
Attributes inherited from Base
#cache, #context_class, #default_external_encoding, #digest_class, #logger, #version
Instance Method Summary collapse
-
#file_digest(pathname) ⇒ Object
Cache calls to
file_digest. -
#find_asset(path, options = {}) ⇒ Object
Cache
find_assetcalls. -
#index ⇒ Object
No-op return self as index.
-
#initialize(environment) ⇒ Index
constructor
A new instance of Index.
Methods inherited from Base
#[], #attributes_for, #content_type_of, #digest, #each_entry, #each_file, #each_logical_path, #entries, #inspect, #stat
Methods included from Caching
Methods included from Processing
#bundle_processors, #css_compressor, #css_compressor=, #format_extensions, #js_compressor, #js_compressor=, #postprocessors, #preprocessors, #processors, #register_bundle_processor, #register_engine, #register_mime_type, #register_postprocessor, #register_preprocessor, #register_processor, #unregister_bundle_processor, #unregister_postprocessor, #unregister_preprocessor, #unregister_processor
Methods included from Engines
#engine_extensions, #engines, #register_engine
Methods included from Mime
#encoding_for_mime_type, #extension_for_mime_type, #mime_types, #register_mime_type
Methods included from Server
Methods included from Trail
#append_path, #clear_paths, #extensions, #paths, #prepend_path, #resolve, #root
Constructor Details
#initialize(environment) ⇒ Index
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
# File 'lib/sprockets/index.rb', line 14 def initialize(environment) @environment = environment if environment.respond_to?(:default_external_encoding) @default_external_encoding = environment.default_external_encoding end # Copy environment attributes @logger = environment.logger @context_class = environment.context_class @cache = environment.cache @trail = environment.trail.index @digest = environment.digest @digest_class = environment.digest_class @version = environment.version @mime_types = environment.mime_types @engines = environment.engines @preprocessors = environment.preprocessors @postprocessors = environment.postprocessors @bundle_processors = environment.bundle_processors # Initialize caches @assets = {} @digests = {} end |
Instance Method Details
#file_digest(pathname) ⇒ Object
Cache calls to file_digest
46 47 48 49 50 51 52 53 |
# File 'lib/sprockets/index.rb', line 46 def file_digest(pathname) key = pathname.to_s if @digests.key?(key) @digests[key] else @digests[key] = super end end |
#find_asset(path, options = {}) ⇒ Object
Cache find_asset calls
56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 |
# File 'lib/sprockets/index.rb', line 56 def find_asset(path, = {}) [:bundle] = true unless .key?(:bundle) if asset = @assets[cache_key_for(path, )] asset elsif asset = super logical_path_cache_key = cache_key_for(path, ) full_path_cache_key = cache_key_for(asset.pathname, ) # Cache on Index @assets[logical_path_cache_key] = @assets[full_path_cache_key] = asset # Push cache upstream to Environment @environment.instance_eval do @assets[logical_path_cache_key] = @assets[full_path_cache_key] = asset end asset end end |
#index ⇒ Object
No-op return self as index
41 42 43 |
# File 'lib/sprockets/index.rb', line 41 def index self end |