SinatraでActiveRecord使う

SinatraでHello Worldするまでの続きとして. SQLiteの場合.

Gemfileに以下を追加してbundle installする.

gem 'sinatra-activerecord'
gem 'sqlite3'

DB接続部分を書く. とりあえずapp.rbに書いた.

require 'sinatra'
require 'active_record'

ActiveRecord::Base.establish_connection(
  adapter: 'sqlite3',
  database: 'development.sqlite3'
)

# 以下省略

Rakefile書く.

require 'sinatra/activerecord/rake'
require './app'

これでrake db:migrateとか出来るようになった. 今回はとりあえずusersテーブル作る. rake -Tすれば可能なコマンド一覧が見れる.

bundle exec rake db:create_migration NAME=create_users

するとdb/migrateの中にmigrationファイルが作られるので編集する.

class CreateUsers < ActiveRecord::Migration
  def change
    create_table :users do |t|
      t.string :name

      t.timestamps
    end
  end
end

終わったらDBに反映.

bundle exec rake db:migrate

app.rbで使ってみる.

# 上は省略

class User < ActiveRecord::Base
end

get '/' do
  "Hello #{User.count} users!"
end

あとは

bundle exec rackup

して, http://localhost:9292にアクセスして確認.