Sinatra application boilerplate
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
bin
lib
spec
.gitignore
.rspec
CHANGELOG.md
Gemfile
Gemfile.lock
LICENSE.txt
README.md
sinator.gemspec

README.md

Background

Sinator is Sinatra application boilerplate. It provides generator and contains minimum configuration to develop web application with Sinatra. The reasons behind this project because I want to create many small web application based on sinatra with other third party ruby gems as foundation.

Features

  • Generate Sinatra based web application without database
  • Generate Sinatra based web application with PostgreSQL database configuration and Sequel as ORM

Installation

gem install sinator

with Bundler, put this code in your Gemfile:

gem 'sinator'

How to Use

generate app in current directory without database

sinator -n my_app

generate app in target directory without database

sinator -n my_app -t target/dir

generate app in current directory with database. -d option will generate app with Sequel ORM and PostgreSQL adapter.

sinator -n my_app -d

Example Usage

This example assume that PostgreSQL is already running and desired database is already exist. For complete example see github.com/kuntoaji/todo_sinator

  1. run sinator -n my_app -d
  2. cd my_app
  3. run bundle install
  4. configure your database setting in config/database.yml
  5. create file db/migrations/001_create_artists.rb and put the following code:
Sequel.migration do
  up do
    create_table(:artists) do
      primary_key :id
      String :name, :null=>false
    end
  end

  down do
    drop_table(:artists)
  end
end
  1. run rake db:migrate
  2. create file app/models/Artist.rb and put the following code:
class Artist < Sequel::Model
end
  1. create file app/routes/artists.rb and put the following code:
class MyApp
  get '/artists' do
    @artists = Artist.all
    erb :"artists/index"
  end

  post '/artists' do
    @artist = Artist.new
    @artist.name = params[:name]
    @artist.save

    redirect '/artists'
  end
end
  1. create file app/views/artists/index.erb and put the following code:
<h1>List of Artist</h1>
<ul>
  <% @artists.each do |artist| %>
    <li><%= artist.name %></li>
  <% end %>
</ul>

<form action="/artists" method="post">
  <%= Rack::Csrf.tag(env) %>
  <input type="text" name="name" />
  <button>Submit</button>
</form>
  1. run the server bundle exec puma
  2. open url localhost:9292/artists

List of Ruby Gems

  • sinatra
  • sinatra-contrib
  • encrypted_cookie
  • Sinatra::Reloader in development environment only
  • puma
  • Rack::Session::EncryptedCookie
  • Rack::Csrf
  • sequel
  • sequel_pg as PostgreSQL adapter
  • sprockets
  • sass
  • uglifier
  • tux for console