Class: Sprockets::Base
- Inherits:
-
Object
- Object
- Sprockets::Base
- Includes:
- Caching, Digest, Processing, Server, Trail
- Defined in:
- lib/sprockets/base.rb
Overview
‘Base` class for `Environment` and `Index`.
Direct Known Subclasses
Instance Attribute Summary collapse
-
#cache ⇒ Object
Get persistent cache store.
-
#context_class ⇒ Object
readonly
Get ‘Context` class.
-
#logger ⇒ Object
Get and set ‘Logger` instance.
Instance Method Summary collapse
-
#[](*args) ⇒ Object
Preferred ‘find_asset` shorthand.
-
#attributes_for(path) ⇒ Object
Internal.
-
#content_type_of(path) ⇒ Object
Internal.
- #each_entry(root, &block) ⇒ Object
- #each_file ⇒ Object
- #each_logical_path ⇒ Object
-
#entries(pathname) ⇒ Object
Works like ‘Dir.entries`.
-
#file_digest(path, data = nil) ⇒ Object
Read and compute digest of filename.
-
#find_asset(path, options = {}) ⇒ Object
Find asset by logical path or expanded path.
-
#index ⇒ Object
Return an ‘Index`.
-
#inspect ⇒ Object
Pretty inspect.
-
#stat(path) ⇒ Object
Works like ‘File.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
#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
Methods included from Digest
#digest, #digest_class, #digest_class=, #version, #version=
Instance Attribute Details
#cache ⇒ Object
Get persistent cache store
32 33 34 |
# File 'lib/sprockets/base.rb', line 32 def cache @cache end |
#context_class ⇒ Object (readonly)
Get ‘Context` class.
This class maybe mutated and mixed in with custom helpers.
environment.context_class.instance_eval do
include MyHelpers
def asset_url; end
end
29 30 31 |
# File 'lib/sprockets/base.rb', line 29 def context_class @context_class end |
#logger ⇒ Object
Get and set ‘Logger` instance.
18 19 20 |
# File 'lib/sprockets/base.rb', line 18 def logger @logger end |
Instance Method Details
#[](*args) ⇒ Object
Preferred ‘find_asset` shorthand.
environment['application.js']
109 110 111 |
# File 'lib/sprockets/base.rb', line 109 def [](*args) find_asset(*args) end |
#attributes_for(path) ⇒ Object
Internal. Return a ‘AssetAttributes` for `path`.
85 86 87 |
# File 'lib/sprockets/base.rb', line 85 def attributes_for(path) AssetAttributes.new(self, path) end |
#content_type_of(path) ⇒ Object
Internal. Return content type of ‘path`.
90 91 92 |
# File 'lib/sprockets/base.rb', line 90 def content_type_of(path) attributes_for(path).content_type end |
#each_entry(root, &block) ⇒ Object
113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 |
# File 'lib/sprockets/base.rb', line 113 def each_entry(root, &block) return to_enum(__method__, root) unless block_given? root = Pathname.new(root) unless root.is_a?(Pathname) paths = [] entries(root).sort.each do |filename| path = root.join(filename) paths << path if stat(path).directory? each_entry(path) do |subpath| paths << subpath end end end paths.sort_by(&:to_s).each(&block) nil end |
#each_file ⇒ Object
134 135 136 137 138 139 140 141 142 143 144 |
# File 'lib/sprockets/base.rb', line 134 def each_file return to_enum(__method__) unless block_given? paths.each do |root| each_entry(root) do |path| if !stat(path).directory? yield path end end end nil end |
#each_logical_path ⇒ Object
146 147 148 149 150 151 152 153 154 155 |
# File 'lib/sprockets/base.rb', line 146 def each_logical_path return to_enum(__method__) unless block_given? files = {} each_file do |filename| logical_path = attributes_for(filename).logical_path yield logical_path unless files[logical_path] files[logical_path] = true end nil end |
#entries(pathname) ⇒ Object
Works like ‘Dir.entries`.
Subclasses may cache this method.
52 53 54 |
# File 'lib/sprockets/base.rb', line 52 def entries(pathname) trail.entries(pathname) end |
#file_digest(path, data = nil) ⇒ Object
Read and compute digest of filename.
Subclasses may cache this method.
66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 |
# File 'lib/sprockets/base.rb', line 66 def file_digest(path, data = nil) if stat = self.stat(path) # `data` maybe provided if data digest.update(data) # If its a file, digest the contents elsif stat.file? digest.file(path.to_s) # If its a directive, digest the list of filenames elsif stat.directory? contents = self.entries(path).join(',') digest.update(contents) end end end |
#find_asset(path, options = {}) ⇒ Object
Find asset by logical path or expanded path.
95 96 97 98 99 100 101 102 103 |
# File 'lib/sprockets/base.rb', line 95 def find_asset(path, = {}) pathname = Pathname.new(path) if pathname.absolute? build_asset(attributes_for(pathname).logical_path, pathname, ) else find_asset_in_path(pathname, ) end end |
#index ⇒ Object
Return an ‘Index`. Must be implemented by the subclass.
45 46 47 |
# File 'lib/sprockets/base.rb', line 45 def index raise NotImplementedError end |
#inspect ⇒ Object
Pretty inspect
158 159 160 161 162 163 164 |
# File 'lib/sprockets/base.rb', line 158 def inspect "#<#{self.class}:0x#{object_id.to_s(16)} " + "root=#{root.to_s.inspect}, " + "paths=#{paths.inspect}, " + "digest=#{digest.to_s.inspect}" + ">" end |
#stat(path) ⇒ Object
Works like ‘File.stat`.
Subclasses may cache this method.
59 60 61 |
# File 'lib/sprockets/base.rb', line 59 def stat(path) trail.stat(path) end |