Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Bower components Debian packages RPM packages NuGet packages

sleewoo / el   ruby

Repository URL to install this package:

/ docs / Assets.md

Specialized Tags

Espresso Lungo offers specialized helpers for JavaScript, CSS and image tags.

js_tag :application
#=> <script src="/assets/application.js" ...

css_tag :application
#=> <link href="/assets/application.css" ...

png_tag 'icons/edit'
#=> <img src="/assets/icons/edit.png">

Other helpers:

  • jpg_tag
  • jpeg_tag
  • png_tag
  • gif_tag
  • tif_tag
  • tiff_tag
  • bmp_tag
  • svg_tag
  • xpm_tag

Specialized helpers will use assets URL as prefix:

# --- app.rb ---
class App < E
  # ...

  def index
    render
  end
end

app = E.new do
  assets_url '/public'
end

# --- view/app/index.erb ---

js_tag :ui
#=> <script src="/public/ui.js" ...

png_tag 'images/header'
#=> <img src="/public/images/header.png"

If you need to load some asset directly, without assets URL prefix, use :src option for js/images and :href for css:

js_tag src: "/jquery"
#=> <script src="/jquery.js" ...

css_tag href: "http://my.cdn/theme"
#=> <link href="http://my.cdn/theme.css" ...

png_tag src: 'icons/edit'
#=> <img src="icons/edit.png">

[ contents ↑ ]

Assets Mapper

assets_mapper allow to avoid repetitive path typing when loading assets.

Example: - long way:

js_tag  'vendor/jquery'

js_tag  'vendor/bootstrap/js/bootstrap'
css_tag 'vendor/bootstrap/css/bootstrap'

js_tag  'vendor/select2/select2.min'
css_tag 'vendor/select2/select2'

Example: - using assets_mapper

assets_mapper :vendor do
  js_tag  'jquery'
  
  cd 'bootstrap'
  js_tag  'js/bootstrap'
  css_tag 'css/bootstrap'
  
  cd '../select2'
  js_tag  'select2.min'
  css_tag 'select2'

[ contents ↑ ]

Sprockets

To enable and use Sprockets, simply call assets_url at app level:

app = E.new
app.assets_url '/assets'
app.assets.append_path 'assets'
app.run

Note: by default no paths will be added to Sprockets environment, so it is up to you to do this by using assets.append_path or assets.prepend_path.

Note: Sprockets environment will use app root as base path, so folders containing assets should reside in your app root.

app = E.new do
  assets_url '/assets'
  assets.append_path 'assets'
  assets.append_path 'public'
end
app.run

assets method can be used to fully setup Sprockets environment:

app = E.new do
  assets_url '/assets'
  assets.compile = true
  assets.compress = false
  assets.js_compressor = :uglifier
  # etc.
end

app.run

To access assets inside controllers/templates, use assets method as well:

class App < E
  # ...

  def some_action
    assets['application.js'] #=> #<Sprockets::BundledAsset ...>
  end

end

[ contents ↑ ]