Sinatra, ActiveRecord, and MySQL
September 6, 2012If you want to use ActiveRecord with Sinatra, the sinatra-activerecord gem is the way to go. The examples in their documentation are for the sqlite3 adapter. I thought it'd be helpful to show how I used this gem with MySQL instead. I created a models folder in my app root, where I store my ActiveRecord models. You can include all of them in one file (like models.rb) or give each model it's own file, and include it explicitly. We'll use the former for this example.
# config/database.yml database: dbFoo username: db_user password: db_pass host: localhost port: 9999
Now we tell the gem about our db settings:
# app.rb
require 'sinatra'
require 'sinatra/activerecord'
require 'yaml'
require './models/models.rb'
DB_CONFIG = YAML::load(File.open('config/database.yml'))
set :database, "mysql://#{DB_CONFIG['username']}:#{DB_CONFIG['password']}@#{DB_CONFIG['host']}:#{DB_CONFIG['port']}/#{DB_CONFIG['database']}"
get '/' do
@items = Item.all
erb :index
end
Simple, and you get all the power of ActiveRecord as well as the ability to run migrations.