Sinatra Support

A collection of useful utilities.

Sinatra Support’s mission is to implement the things web apps will need 90% of the time. Think of it as Rails’s conveniences done the Sinatra way.

Plugins

Sinatra::CssSupport

Provides CSS/Sass/Less support.

Sinatra::JsSupport

Provides JavaScript/CoffeeScript support.

Sinatra::Numeric

Helpers for showing percentages and currencies.

Sinatra::DateForms

Provides dropdowns for year/month/date.

Sinatra::I18nSupport

Provides I18n support.

Sinatra::MultiRender

Allow rendering from multiple view paths and auto-guessing template engines.

Sinatra::CompassSupport

Adds support for the Compass CSS framework.

Sinatra::CompressedJS

JavaScript compression.

Sinatra::AppModule

Write parts of your application as a module.

Helpers

Sinatra::CountryHelpers

Country dropdowns and stuff.

Sinatra::HtmlHelpers

Provides many common HTML helpers.

Sinatra::IfHelpers

Common HAML condition helpers.

Sinatra::UserAgentHelpers

Browser detection.

Sinatra::OhmErrorHelpers

Allows you to present errors nicely in HAML templates.

How to use

Require the Sinatra support gem. For those using Bundler, that is:

  # Gemfile
  gem "sinatra-support", require: "sinatra/support"

Or otherwise:

  # gem install sinatra-support
  require 'sinatra/support'

In your Sinatra application, use register or helpers to add in plugins as you need them.

  class Main < Sinatra::Base
    register Sinatra::DateForms
    helpers  Sinatra::HtmlHelpers
    helpers  Sinatra::CountryHelpers
  end

Common examples

Provided by Sinatra::UserAgentHelpers:

Detect browser versions easily.

  helpers Sinatra::UserAgentHelpers

  if browser.ios? && !browser.ipad?
    redirect '/touch'
  end

Provided by Sinatra::CssSupport:

Serve up dynamic stylesheets (Sass/Less) with ease. Dynamic JavaScript files (CoffeeScript) are also available via Sinatra::JsSupport.

  register Sinatra::CssSupport
  serve_css '/css', from: './app/css'

  # curl "http://localhost:4567/css/print.css"   # reads app/css/print.sass 
                                                 # (or .less, .scss, .css)

Provided by Sinatra::IfHelpers:

Conditional helpers for HAML (checked_if, hide_if, etc):

   %input{checked_if(page.available?), type: 'checkbox'}
   %div#comments{hide_if(post.comments.empty?)}

Provided by Sinatra::CountryHelpers:

  

Provided by Sinatra::DateForms:

  
  
  
  

Provided by Sinatra::Numeric:

  <%= currency(100) %>
  <%= percentage(100) %>

Provided by Sinatra::HtmlHelpers:

  <%= h "" %>
  
  
  

Starting a new project?

Also consider Rico Sta. Cruz’s sinatra-template which already preloads some of Sinatra Support’s conveniences and more. github.com/rstacruz/sinatra-template

Copyright

Copyright © 2009-2011 Cyril David, Rico Sta. Cruz and Sinefunc, Inc. See LICENSE for details.