class Sprockets::BundledAsset

`BundledAsset`s are used for files that need to be processed and concatenated with other assets. Use for `.js` and `.css` files.

Attributes

source[R]

Public Class Methods

new(environment, logical_path, pathname) click to toggle source
Calls superclass method Sprockets::Asset.new
# File lib/sprockets/bundled_asset.rb, line 13
def initialize(environment, logical_path, pathname)
  super(environment, logical_path, pathname)

  @processed_asset  = environment.find_asset(pathname, :bundle => false)
  @required_assets  = @processed_asset.required_assets
  @dependency_paths = @processed_asset.dependency_paths

  @source = ""

  # Explode Asset into parts and gather the dependency bodies
  to_a.each { |dependency| @source << dependency.to_s }

  # Run bundle processors on concatenated source
  context = environment.context_class.new(environment, logical_path, pathname)
  @source = context.evaluate(pathname, :data => @source,
              :processors => environment.bundle_processors(content_type))

  @mtime  = (to_a + @dependency_paths).map(&:mtime).max
  @length = Rack::Utils.bytesize(source)
  @digest = environment.digest.update(source).hexdigest
end

Public Instance Methods

body() click to toggle source

Get asset's own processed contents. Excludes any of its required dependencies but does run any processors or engines on the original file.

# File lib/sprockets/bundled_asset.rb, line 60
def body
  @processed_asset.source
end
dependencies() click to toggle source

Return an `Array` of `Asset` files that are declared dependencies.

# File lib/sprockets/bundled_asset.rb, line 65
def dependencies
  to_a.reject { |a| a.eql?(@processed_asset) }
end
encode_with(coder) click to toggle source

Serialize custom attributes in `BundledAsset`.

Calls superclass method Sprockets::Asset#encode_with
# File lib/sprockets/bundled_asset.rb, line 50
def encode_with(coder)
  super

  coder['source'] = source
  coder['required_assets_digest'] = @processed_asset.dependency_digest
end
fresh?(environment) click to toggle source

Checks if Asset is stale by comparing the actual mtime and digest to the inmemory model.

# File lib/sprockets/bundled_asset.rb, line 76
def fresh?(environment)
  @processed_asset.fresh?(environment)
end
init_with(environment, coder) click to toggle source

Initialize `BundledAsset` from serialized `Hash`.

Calls superclass method Sprockets::Asset#init_with
# File lib/sprockets/bundled_asset.rb, line 36
def init_with(environment, coder)
  super

  @processed_asset = environment.find_asset(pathname, :bundle => false)
  @required_assets = @processed_asset.required_assets

  if @processed_asset.dependency_digest != coder['required_assets_digest']
    raise UnserializeError, "processed asset belongs to a stale environment"
  end

  @source = coder['source']
end
to_a() click to toggle source

Expand asset into an `Array` of parts.

# File lib/sprockets/bundled_asset.rb, line 70
def to_a
  required_assets
end