-
Notifications
You must be signed in to change notification settings - Fork 14
ORMComponents
This section covers the specifics of setting up an application using the sinatra_more generators and each database component.
To generate an application using datamapper as the ORM, invoke the sinatra_more generator:
$ sinatra_gen demo_app . -d datamapper
You also need to make sure you have the following gems installed:
$ sudo gem install data_objects
$ sudo gem install do_sqlite3 # for sqlite3
$ sudo gem install do_postgres # for postgres
$ sudo gem install do_mysql # for mysql
Next, we need to configure the database setup options. The connection line can be found in config/initializers/data_mapper.rb
. In here, we can change the DataMapper.setup
call to configure the database:
# config/initializers/data_mapper.rb
# ...
app.configure(:development) {
DataMapper.setup(:default, "sqlite3://#{Dir.pwd}/blog.sqlite3") }
app.configure(:production) {
DataMapper.setup(:default, "sqlite3://#{Dir.pwd}/blog_production.sqlite3") }
app.configure(:test) {
DataMapper.setup(:default, "sqlite3://#{Dir.pwd}/blog_test.sqlite3") }
This should be all that needs to be done to configure datamapper in your application. Now you can add additional datamapper models into your app/models
directory. The definition for a dm model looks like the following:
class Post
include DataMapper::Resource
property :id, Serial
property :title, String
property :body, Text
property :created_at, DateTime
end
For more information about DataMapper, check out the DataMapper Documentation
To generate an application using mongo_mapper as the ORM, invoke the sinatra_more generator:
$ sinatra_gen demo_app . -d mongomapper
First, you need to install the native mongodb binaries from the mongodb website (or through MacPorts or a package management system).
In addition, you also need to make sure you have the following gems installed:
$ sudo gem install mongo --source http://gemcutter.org
$ sudo gem install mongo_mapper --source http://gemcutter.org
Be sure to start the mongodb database by using:
mongod --dbpath /path/to/db
Next, we need to configure the database setup options. The connection line can be found in config/initializers/mongo_db.rb
. In here, we can change the MongoMapper.connection
to configure the database:
# config/initializers/mongo_db.rb
app.configure :development do
MongoMapper.connection = Mongo::Connection.new('localhost')
MongoMapper.database = 'blog'
end
app.configure :production do
MongoMapper.connection = Mongo::Connection.new('localhost')
MongoMapper.database = 'blog_production'
end
app.configure :test do
MongoMapper.connection = Mongo::Connection.new('localhost')
MongoMapper.database = 'test_blog'
end
This should be all that needs to be done to configure mongo_mapper in your application. Now you can add additional mongo_mapper models into your app/models
directory. The definition for a mongo model document looks like the following:
class Post
include MongoMapper::Document
key :title, String
key :body, String
key :created_at, Time
end
For more information about MongoMapper, check out the MongoMapper Readme
To generate an application using active_record as the ORM, invoke the sinatra_more generator:
$ sinatra_gen demo_app . -d activerecord
Next, we need to configure the database setup options. The connection line can be found in config/initializers/active_record.rb
. In here, we can change the ActiveRecord::Base.establish_connection
call to configure the database:
# config/initializers/active_record.rb
app.configure :development do
ActiveRecord::Base.establish_connection(
:adapter => 'sqlite3', :database => 'blog.db')
end
app.configure :production do
ActiveRecord::Base.establish_connection(
:adapter => 'sqlite3', :database => 'blog_production.rb')
end
app.configure :test do
ActiveRecord::Base.establish_connection(
:adapter => 'sqlite3', :database => 'blog_test.rb')
end
Now the database needs to be migrated to define the users table for development and test environments:
$ rake db:migrate
$ rake db:migrate RACK_ENV=test
This should be all that needs to be done to configure activerecord in your application. Now you can add additional activerecord models into your app/models
directory. The definition for a ar model looks like the following:
class Post < ActiveRecord::Base
# no schema, this is found in a migration
end
To create the migration, simply add a file to the db/migrate
directory:
# db/migrate/002_create_posts.rb
class CreatePosts < ActiveRecord::Migration
def self.up
create_table :posts do |t|
t.column :title, :string
t.column :body, :text
t.column :created_at, :datetime
end
end
def self.down
drop_table :posts
end
end
For more information about ActiveRecord, check out the ActiveRecord Documentation
To generate an application using sequel as the ORM, invoke the sinatra_more generator:
$ sinatra_gen demo_app . -d sequel
Next, we need to configure the database setup options. The connection line can be found in config/initializers/sequel.rb
. In here, we can change the Sequel.connect
call to configure the database:
# config/initializers/sequel.rb
app.configure(:development) { Sequel.connect("sqlite://#{Dir.pwd}/blog.db") }
app.configure(:production) { Sequel.connect("sqlite://#{Dir.pwd}/blog_live.db") }
app.configure(:test) { Sequel.connect"sqlite://#{Dir.pwd}/blog_test.db") }
This should be all that needs to be done to configure sequel in your application. Now you can add additional sequel models into your app/models
directory. The definition for a sequel model looks like the following:
class Post < Sequel::Model(:posts)
unless table_exists?
set_schema do
primary_key :id
string :title
string :body
datetime :created_at
end
create_table
end
end
For more information about Sequel, check out the Sequel Documentation
To generate an application using couchrest as the ORM, invoke the sinatra_more generator:
$ sinatra_gen demo_app . -d couchrest