Padrino Pipeline

Padrino Pipeline is a gem for Padrino. It provides a unified way to use several different asset management systems.

Build Status Code Climate Dependency Status

Supported Pipelines

Simple Usage

Gemfile

Add to your Gemfile:

gem 'padrino-pipeline'

These examples examples setup a pipeline with defaulted options(see default options):

Sprockets pipeline

module Example
  class App < Padrino::Application
    register Padrino::Pipeline
    configure_assets do |config|
      config.pipeline = Padrino::Pipeline::Sprockets
    end
  end
end

Sinatra AssetPack pipeline

module Example
  class App < Padrino::Application
    register Padrino::Pipeline
    configure_assets do |config|
      config.pipeline = Padrino::Pipeline::AssetPack
    end
  end
end

Options

Certain options can be configured to change the behavior of the pipelines. These options should be used within the configure_assets block.

for example:

module Example
  class App < Padrino::Application
    register Padrino::Pipeline
    configure_assets do |config|
      config.pipeline = Padrino::Pipeline::AssetPack
      config.css_prefix = '/xyz'
    end
  end
end

Pipeline

module Example
  class App < Padrino::Application
    register Padrino::Pipeline
    configure_assets do |config|
      config.pipeline = Padrino::Pipeline::AssetPack
    end
  end
end

config.pipeline = Padrino::Pipeline::AssetPack config.pipeline = Padrino::Pipeline::Sprockets

Assets URI(mounting location) String

css_prefix

module Example
  class App < Padrino::Application
    register Padrino::Pipeline
    configure_assets do |config|
      config.pipeline = Padrino::Pipeline::Sprockets
      config.css_prefix = '/my_custom_location'
    end
  end
end

/my_custom_location will be the location css assets are served e.g. /my_custom_location/application.css

js_prefix

module Example
  class App < Padrino::Application
    register Padrino::Pipeline
    configure_assets do |config|
      config.pipeline = Padrino::Pipeline::Sprockets
      config.js_prefix = '/js'
    end
  end
end

/js will be the location css assets are served e.g. /js/application.js

Asset location(path to files) String/Array

css_assets

module Example
  class App < Padrino::Application
    register Padrino::Pipeline
    configure_assets do |config|
      config.pipeline = Padrino::Pipeline::Sprockets
      config.css_assets = '/path/to/stylesheets'
    end
  end
end

/path/to/stylesheets will be served at the css_prefix(default: /assets/stylesheets)

js_assets

module Example
  class App < Padrino::Application
    register Padrino::Pipeline
    configure_assets do |config|
      config.pipeline = Padrino::Pipeline::Sprockets
      config.js_assets = '/path/to/javascripts'
    end
  end
end

/path/to/javascripts will be served at the js_prefix(default: /assets/javascripts)

Prefix prepend this prefix before all assets

prefix

module Example
  class App < Padrino::Application
    register Padrino::Pipeline
    configure_assets do |config|
      config.pipeline = Padrino::Pipeline::Sprockets
      config.prefix = '/public'
    end
  end
end

prefixes /public to all asset URLs. Above example will serve assets from:

  • /public/assets/stylesheets/application.css # => http://localhost:3000/public/assets/stylesheets/application.css
  • /public/assets/javascripts/application.js # => http://localhost:3000/public/assets/javascripts/application.js

Default option values

TODO

compile asset rake tasks

Add require 'padrino-pipeline/tasks' to your Rakefile.

Sprocket compiled assets

javascript_include_tag & stylesheet_link_tag have been patched to include the hex digest of compiled assets. if the assets do not exist a fresh copy will be served via the normal asset URL. e.g. application-12abc456xyz.js vs application.js

Asset pack packages

  module Example
    class App < Padrino::Application
      register Padrino::Pipeline
      configure_assets do |config|
        config.pipeline   = Padrino::Pipeline::AssetPack
        config.packages << [:js, :application, '/assets/javascripts/application.js', ['/assets/javascripts/*.js']]
      end
    end
  end

Will serve /assets/javascripts/application.js as a bundle

Sprocket directive require/include/require tree

TODO