Need help with sinatra-sequel?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

rtomayko
197 Stars 28 Forks Other 17 Commits 13 Opened issues

Description

Sinatra extension that adds Sequel ORM features, database config, and database migrations

Services available

!
?

Need anything else?

Contributors list

# 12,458
Ruby
Markdow...
Homebre...
rack
11 commits
# 92,868
Ruby
Rails
postgre...
feature...
1 commit
# 47,511
Ruby
authori...
Rails
oauth2
1 commit

Sinatra Sequel Extension

Extends Sinatra with a variety of extension methods for dealing with a SQL database using the Sequel ORM.

Install the

sinatra-sequel
gem along with one of the database adapters:
sudo gem install sequel sinatra-sequel
sudo gem install sqlite3
sudo gem install mysql
sudo gem install postgres

I like to split database configuration and migrations out into a separate

database.rb
file and then require it from the main app file, but you can plop the following code in about anywhere and it'll work just fine:
require 'sinatra'
require 'sinatra/sequel'

Establish the database connection; or, omit this and use the DATABASE_URL

environment variable as the connection string:

set :database, 'sqlite://foo.db'

At this point, you can access the Sequel Database object using the

"database" object:

puts "the foos table doesn't exist" if !database.table_exists?('foos')

define database migrations. pending migrations are run at startup and

are guaranteed to run exactly once per database.

migration "create teh foos table" do database.create_table :foos do primary_key :id text :bar integer :baz, :default => 42 timestamp :bizzle, :null => false

index :baz, :unique => true

end end

you can also alter tables

migration "everything's better with bling" do database.alter_table :foos do drop_column :baz add_column :bling, :float end end

models just work ...

class Foo < Sequel::Model many_to_one :bar end

see:

Foo.filter(:baz => 42).each { |foo| puts(foo.bar.name) }

access the database within the context of an HTTP request

get '/foos/:id' do @foo = database[:foos].filter(:id => params[:id]).first erb :foos end

or, using the model

delete '/foos/:id' do @foo = Foo[params[:id]] @foo.delete end

Sequel Reference Material

Status

This repository is no longer actively maintained by @rtomayko as of 2017-11-08. Issues and PRs documenting current issues have been intentionally left open for informational purposes.

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.