Usage

Note that there is a Main App and an App2. This is to demonstrate that you can give links relative to the app, but if they are mounted with an extra prefix (using Rack#map, for example) the helper will respect that and produce the right href attribute.

Installation and loading

Start by installing:

gem 'sinatra-exstatic-assets'

Then require it in your Sinatra app.

require 'sinatra/exstatic_assets'

The helpers

Use these helpers in your views.

stylesheet_tag

Default use:

By default, the querystring is appended with parameter of "ts" (for timestamp) and the mtime of the file.

The code:

stylesheet_tag "/css/screen.css"

Output:

<%= Rack::Utils.escape_html( stylesheet_tag "/css/screen.css") %>

Alternative timestamp format

You can choose to take an SHA1 of the file instead:

stylesheet_tag "/css/screen.css", timestamp_format: :sha1

Output:

<%= Rack::Utils.escape_html( stylesheet_tag "/css/screen.css", timestamp_format: :sha1) %>

To set the timestamp for all calls, use the settings object:

set :timestamp_format, :sha1

It's set to :mtime_int by default. The timestamp formatting applies to all method calls (except for favicon, because favicons aren't cached in the same manner) but can be overridden by including the option in the method call e.g.

set :timestamp_format, :sha1 stylesheet_tag "/css/screen.css", timestamp_format: :mtime_int

Would mean that the resultant stylesheet would have an SHA1 string appended, but other method calls without the "timestamp_format: :mtime_int" would have an mtime appended.

Also known as:

  • css_tag
  • stylesheet

javascript_tag

Using a URL

The code:

javascript_tag "http://code.jquery.com/jquery-1.9.1.min.js"

Output:

<%= Rack::Utils.escape_html( javascript_tag "http://code.jquery.com/jquery-1.9.1.min.js") %>

When a URL is given, no timestamp is appended. If the javascript was a file, then like stylesheet_tag above, it would have a timestamp appended.

Also known as:

  • javascript_include_tag
  • js_tag
  • script_tag

image_tag

The code:

image_tag "http://farm3.staticflickr.com/2474/3609420787_f7fc0e53c7.jpg", width: "500", height: "375", alt: "Magic Ball"

Output:

<%= Rack::Utils.escape_html( image_tag "http://farm3.staticflickr.com/2474/3609420787_f7fc0e53c7.jpg", width: "500", height: "375", alt: "Magic Ball" ) %>

Also known as:

  • img_tag
  • img

favicon_tag

The code:

favicon_tag

Output:

<%= Rack::Utils.escape_html( favicon_tag ) %>