Class: Sprockets::Asset
- Inherits:
-
Object
- Object
- Sprockets::Asset
- Defined in:
- lib/sprockets/asset.rb,
lib/sprockets/legacy.rb
Instance Attribute Summary collapse
-
#content_type ⇒ Object
readonly
Public: Returns String MIME type of asset.
-
#filename ⇒ Object
readonly
Public: Returns String path of asset.
-
#id ⇒ Object
readonly
Internal: Unique asset object ID.
-
#integrity ⇒ Object
readonly
Public: A “named information” URL for subresource integrity.
-
#logical_path ⇒ Object
readonly
Returns the value of attribute logical_path.
-
#metadata ⇒ Object
readonly
Public: Metadata accumulated from pipeline process.
-
#uri ⇒ Object
readonly
Public: Internal URI to lookup asset by.
Instance Method Summary collapse
-
#base64digest ⇒ Object
Public: Returns String base64 digest of source.
-
#charset ⇒ Object
Public: Get charset of source.
-
#dependencies ⇒ Object
Deprecated: Get all required Assets.
-
#digest_path ⇒ Object
Public: Return logical path with digest spliced in.
-
#each {|to_s| ... } ⇒ Object
Public: Add enumerator to allow ‘Asset` instances to be used as Rack compatible body objects.
-
#eql?(other) ⇒ Boolean
(also: #==)
Public: Compare assets.
-
#hash ⇒ Object
Public: Implements Object#hash so Assets can be used as a Hash key or in a Set.
-
#hexdigest ⇒ Object
(also: #digest, #etag)
Public: Returns String hexdigest of source.
-
#included ⇒ Object
Public: Get all internally required assets that were concated into this asset.
-
#initialize(environment, attributes = {}) ⇒ Asset
constructor
Private: Intialize Asset wrapper from attributes Hash.
-
#inspect ⇒ Object
Public: Pretty inspect.
-
#length ⇒ Object
(also: #bytesize)
Public: Returns Integer length of source.
-
#links ⇒ Object
Public: Get all externally linked asset filenames from asset.
-
#mtime ⇒ Object
Deprecated: Returns Time of the last time the source was modified.
-
#pathname ⇒ Object
Deprecated: Use #filename instead.
-
#source ⇒ Object
Public: Return ‘String` of concatenated source.
-
#to_a ⇒ Object
Deprecated: Expand asset into an ‘Array` of parts.
-
#to_hash ⇒ Object
Internal: Return all internal instance variables as a hash.
-
#to_s ⇒ Object
Public: Alias for #source.
-
#write_to(filename) ⇒ Object
Deprecated: Save asset to disk.
Constructor Details
#initialize(environment, attributes = {}) ⇒ Asset
Private: Intialize Asset wrapper from attributes Hash.
Asset wrappers should not be initialized directly, only Environment#find_asset should vend them.
attributes - Hash of ivars
Returns Asset.
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
# File 'lib/sprockets/asset.rb', line 16 def initialize(environment, attributes = {}) @environment = environment @attributes = attributes @content_type = attributes[:content_type] @filename = attributes[:filename] @id = attributes[:id] @integrity = attributes[:integrity] @load_path = attributes[:load_path] @logical_path = attributes[:logical_path] @metadata = attributes[:metadata] @mtime = attributes[:mtime] @name = attributes[:name] @source = attributes[:source] @uri = attributes[:uri] end |
Instance Attribute Details
#content_type ⇒ Object (readonly)
Public: Returns String MIME type of asset. Returns nil if type is unknown.
73 74 75 |
# File 'lib/sprockets/asset.rb', line 73 def content_type @content_type end |
#filename ⇒ Object (readonly)
Public: Returns String path of asset.
49 50 51 |
# File 'lib/sprockets/asset.rb', line 49 def filename @filename end |
#id ⇒ Object (readonly)
Internal: Unique asset object ID.
Returns a String.
54 55 56 |
# File 'lib/sprockets/asset.rb', line 54 def id @id end |
#integrity ⇒ Object (readonly)
Public: A “named information” URL for subresource integrity.
143 144 145 |
# File 'lib/sprockets/asset.rb', line 143 def integrity @integrity end |
#logical_path ⇒ Object (readonly)
Returns the value of attribute logical_path.
6 7 8 |
# File 'lib/sprockets/asset.rb', line 6 def logical_path @logical_path end |
#metadata ⇒ Object (readonly)
Public: Metadata accumulated from pipeline process.
The API status of the keys is dependent on the pipeline processors itself. So some values maybe considered public and others internal. See the pipeline proccessor documentation itself.
Returns Hash.
46 47 48 |
# File 'lib/sprockets/asset.rb', line 46 def @metadata end |
#uri ⇒ Object (readonly)
Public: Internal URI to lookup asset by.
NOT a publically accessible URL.
Returns URI.
61 62 63 |
# File 'lib/sprockets/asset.rb', line 61 def uri @uri end |
Instance Method Details
#base64digest ⇒ Object
Public: Returns String base64 digest of source.
138 139 140 |
# File 'lib/sprockets/asset.rb', line 138 def base64digest DigestUtils.pack_base64digest([:digest]) end |
#charset ⇒ Object
Public: Get charset of source.
Returns a String charset name or nil if binary.
114 115 116 |
# File 'lib/sprockets/asset.rb', line 114 def charset [:charset] end |
#dependencies ⇒ Object
Deprecated: Get all required Assets.
See Asset#to_a
Returns Array of Assets.
200 201 202 |
# File 'lib/sprockets/legacy.rb', line 200 def dependencies to_a.reject { |a| a.filename.eql?(self.filename) } end |
#digest_path ⇒ Object
Public: Return logical path with digest spliced in.
"foo/bar-37b51d194a7513e45b56f6524f2d51f2.js"
Returns String.
68 69 70 |
# File 'lib/sprockets/asset.rb', line 68 def digest_path logical_path.sub(/\.(\w+)$/) { |ext| "-#{etag}#{ext}" } end |
#each {|to_s| ... } ⇒ Object
Public: Add enumerator to allow ‘Asset` instances to be used as Rack compatible body objects.
block
part - String body chunk
Returns nothing.
152 153 154 |
# File 'lib/sprockets/asset.rb', line 152 def each yield to_s end |
#eql?(other) ⇒ Boolean Also known as: ==
Public: Compare assets.
Assets are equal if they share the same path and digest.
Returns true or false.
194 195 196 |
# File 'lib/sprockets/asset.rb', line 194 def eql?(other) self.class == other.class && self.id == other.id end |
#hash ⇒ Object
Public: Implements Object#hash so Assets can be used as a Hash key or in a Set.
Returns Integer hash of the id.
185 186 187 |
# File 'lib/sprockets/asset.rb', line 185 def hash id.hash end |
#hexdigest ⇒ Object Also known as: digest, etag
Public: Returns String hexdigest of source.
125 126 127 |
# File 'lib/sprockets/asset.rb', line 125 def hexdigest DigestUtils.pack_hexdigest([:digest]) end |
#included ⇒ Object
Public: Get all internally required assets that were concated into this asset.
Returns Array of String asset URIs.
88 89 90 |
# File 'lib/sprockets/asset.rb', line 88 def included [:included] end |
#inspect ⇒ Object
Public: Pretty inspect
Returns String.
177 178 179 |
# File 'lib/sprockets/asset.rb', line 177 def inspect "#<#{self.class}:#{object_id.to_s(16)} #{uri.inspect}>" end |
#length ⇒ Object Also known as: bytesize
Public: Returns Integer length of source.
119 120 121 |
# File 'lib/sprockets/asset.rb', line 119 def length [:length] end |
#links ⇒ Object
Public: Get all externally linked asset filenames from asset.
All linked assets should be compiled anytime this asset is.
Returns Set of String asset URIs.
80 81 82 |
# File 'lib/sprockets/asset.rb', line 80 def links [:links] || Set.new end |
#mtime ⇒ Object
Deprecated: Returns Time of the last time the source was modified.
Time resolution is normalized to the nearest second.
Returns Time.
209 210 211 |
# File 'lib/sprockets/legacy.rb', line 209 def mtime Time.at(@mtime) end |
#pathname ⇒ Object
Deprecated: Use #filename instead.
Returns Pathname.
170 171 172 |
# File 'lib/sprockets/legacy.rb', line 170 def pathname @pathname ||= Pathname.new(filename) end |
#source ⇒ Object
Public: Return ‘String` of concatenated source.
Returns String.
95 96 97 98 99 100 101 102 |
# File 'lib/sprockets/asset.rb', line 95 def source if @source @source else # File is read everytime to avoid memory bloat of large binary files File.binread(filename) end end |
#to_a ⇒ Object
Deprecated: Expand asset into an ‘Array` of parts.
Appending all of an assets body parts together should give you the asset’s contents as a whole.
This allows you to link to individual files for debugging purposes.
Use Asset#included instead. Keeping a full copy of the bundle’s processed assets in memory (and in cache) is expensive and redundant. The common use case is to relink to the assets anyway.
Returns Array of Assets.
187 188 189 190 191 192 193 |
# File 'lib/sprockets/legacy.rb', line 187 def to_a if [:included] [:included].map { |uri| @environment.load(uri) } else [self] end end |
#to_hash ⇒ Object
Internal: Return all internal instance variables as a hash.
Returns a Hash.
35 36 37 |
# File 'lib/sprockets/asset.rb', line 35 def to_hash @attributes end |
#to_s ⇒ Object
Public: Alias for #source.
Returns String.
107 108 109 |
# File 'lib/sprockets/asset.rb', line 107 def to_s source end |
#write_to(filename) ⇒ Object
Deprecated: Save asset to disk.
filename - String target
Returns nothing.
161 162 163 164 165 166 167 168 169 170 171 172 |
# File 'lib/sprockets/asset.rb', line 161 def write_to(filename) FileUtils.mkdir_p File.dirname(filename) PathUtils.atomic_write(filename) do |f| f.write source end # Set mtime correctly File.utime(mtime, mtime, filename) nil end |