class Sprockets::Asset
Attributes
Public: Returns String MIME type of asset. Returns nil if type is unknown.
Public: Returns String path of asset.
Internal: Unique asset object ID.
Returns a String.
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.
Public: Internal URI to lookup asset by.
NOT a publically accessible URL.
Returns URI.
Public Class Methods
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
.
# 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] @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
Public Instance Methods
Public: Returns String base64 digest of source.
# File lib/sprockets/asset.rb, line 137 def base64digest DigestUtils.pack_base64digest(metadata[:digest]) end
Public: Get charset of source.
Returns a String charset name or nil if binary.
# File lib/sprockets/asset.rb, line 113 def charset metadata[:charset] end
Deprecated: Get all required Assets.
See Asset#to_a
Returns Array of Assets.
# File lib/sprockets/legacy.rb, line 206 def dependencies to_a.reject { |a| a.filename.eql?(self.filename) } end
Deprecated: Returns String hexdigest of source.
In 4.x this will be changed to return a raw Digest byte String.
Public: Return logical path with digest spliced in.
"foo/bar-37b51d194a7513e45b56f6524f2d51f2.js"
Returns String.
# File lib/sprockets/asset.rb, line 67 def digest_path logical_path.sub(/\.(\w+)$/) { |ext| "-#{etag}#{ext}" } end
Public: Add enumerator to allow `Asset` instances to be used as Rack compatible body objects.
block
part - String body chunk
Returns nothing.
# File lib/sprockets/asset.rb, line 153 def each yield to_s end
Public: Compare assets.
Assets are equal if they share the same path and digest.
Returns true or false.
# File lib/sprockets/asset.rb, line 195 def eql?(other) self.class == other.class && self.id == other.id end
Public: Implements Object#hash so Assets can be used as a Hash key or in a Set.
Returns Integer hash of the id.
# File lib/sprockets/asset.rb, line 186 def hash id.hash end
Public: Returns String hexdigest of source.
# File lib/sprockets/asset.rb, line 124 def hexdigest DigestUtils.pack_hexdigest(metadata[:digest]) end
Public: Get all internally required assets that were concated into this asset.
Returns Array of String asset URIs.
# File lib/sprockets/asset.rb, line 87 def included metadata[:included] end
Public: Pretty inspect
Returns String.
# File lib/sprockets/asset.rb, line 178 def inspect "#<#{self.class}:#{object_id.to_s(16)} #{uri.inspect}>" end
Public: A “named information” URL for subresource integrity.
# File lib/sprockets/asset.rb, line 142 def integrity DigestUtils.integrity_uri(metadata[:digest]) end
Public: Returns Integer length of source.
# File lib/sprockets/asset.rb, line 118 def length metadata[:length] end
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.
# File lib/sprockets/asset.rb, line 79 def links metadata[:links] || Set.new end
Deprecated: Returns Time of the last time the source was modified.
Time resolution is normalized to the nearest second.
Returns Time.
# File lib/sprockets/legacy.rb, line 215 def mtime Time.at(@mtime) end
Deprecated: Use filename
instead.
Returns Pathname.
# File lib/sprockets/legacy.rb, line 176 def pathname @pathname ||= Pathname.new(filename) end
Public: Return `String` of concatenated source.
Returns String.
# File lib/sprockets/asset.rb, line 94 def source if @source @source else # File is read everytime to avoid memory bloat of large binary files File.binread(filename) end end
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.
# File lib/sprockets/legacy.rb, line 193 def to_a if metadata[:included] metadata[:included].map { |uri| @environment.load(uri) } else [self] end end
Internal: Return all internal instance variables as a hash.
Returns a Hash.
# File lib/sprockets/asset.rb, line 34 def to_hash @attributes end
Public: Alias for source
.
Returns String.
# File lib/sprockets/asset.rb, line 106 def to_s source end
Deprecated: Save asset to disk.
filename - String target
Returns nothing.
# File lib/sprockets/asset.rb, line 162 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