class Pakyow::Application::Actions::Assets::Process

Pipeline Action that processes assets at request time.

This is intended for development use, please don't use it in production. Instead, precompile assets into the public directory.

Public Instance Methods

call(connection) click to toggle source
# File lib/pakyow/application/actions/assets/process.rb, line 13
def call(connection)
  if connection.app.config.assets.process
    # TODO: can we short circuit if the request path doesn't match the connection?
    if asset = find_asset(connection) || find_pack(connection) || find_asset_map(connection) || find_pack_map(connection)
      connection.set_header("content-type", asset.mime_type)
      connection.body = asset
      connection.halt
    end
  end
end

Private Instance Methods

find_asset(connection, path = connection.path) click to toggle source
# File lib/pakyow/application/actions/assets/process.rb, line 26
def find_asset(connection, path = connection.path)
  connection.app.state(:asset).find { |asset|
    asset.public_path == path
  }
end
find_asset_map(connection) click to toggle source
# File lib/pakyow/application/actions/assets/process.rb, line 38
def find_asset_map(connection)
  if wants_map?(connection)
    if (asset = find_asset(connection, unmapped(connection))) && asset.source_map?
      asset.source_map
    end
  end
end
find_pack(connection, path = connection.path) click to toggle source
# File lib/pakyow/application/actions/assets/process.rb, line 32
def find_pack(connection, path = connection.path)
  connection.app.state(:pack).lazy.map { |pack|
    pack.packed(path)
  }.find { |packed| !packed.nil? && packed.any? }
end
find_pack_map(connection) click to toggle source
# File lib/pakyow/application/actions/assets/process.rb, line 46
def find_pack_map(connection)
  if (pack = find_pack(connection, unmapped(connection))) && pack.source_map?
    pack.source_map
  else
    nil
  end
end
unmapped(connection) click to toggle source
# File lib/pakyow/application/actions/assets/process.rb, line 58
def unmapped(connection)
  File.join(File.dirname(connection.path), File.basename(connection.path, ".map"))
end
wants_map?(connection) click to toggle source
# File lib/pakyow/application/actions/assets/process.rb, line 54
def wants_map?(connection)
  connection.path.end_with?(".map")
end