ActiveRecordは元々Rails用に作られたものだから当然といえば当然なのだけれど、Rails以外の環境でActiveRecordを使ってテーブルを作成する流れをざっと見やすくわかりやすくまとめた情報は少ないので、SinatraとSQLite3を使った作成手順を個人的Tips付きで復習用にまとめてみる。
#実行環境
- Ruby (2.1.3)
- Sinatra (1.2.0)
- ActiveRecord
- SQLite3
ActiveRecordとは
PHPやSQLの知識がなくてもRuby+αの知識でデータベースを構築できる便利なツール(超訳)
#作成手順
コードを書く前に
0. 必要な情報を整理する
そのデータベースやテーブルにはどんなデータが必要で、そのデータは文字列.string
なのか、真偽値.boolean
なのか、はたまた日時.datetime
なのかなど、どんな形のデータにあたるのかをまとめて、データベース全体や各テーブルについて設計する。
ActiveRecordを使う準備をする
1. Gemfileに必要なことを書き加えてgemを追加
souce "https://rubygems.org"
gem 'sinatra'
gem 'sinatra-contrib'
gem 'sinatra-activerecord'
gem 'sqlite3'
gem 'rake'
Gemfileにこれらを書き加えて、bundle
。ターミナルで操作する前に絶対に保存する。いつまで経ってもbundle
のタイプミスしがち。
2. Rakefileを作成し、Rakefikeに必要なことを書く、保存
実際に作っていく
3. models.rbを作成、書く、保存
models.rbはSQLiteと接続して、データベース全体の設計をするところ。
4. rake db:create_migration NAME=テーブル名(複数形)
5. migrationファイルを書く
個々のテーブルの設計を落とし込んでいく。
6. rake db:migrate
実際にデータベースを構築するSQLiteへ変更を送信(超訳)。
作成したテーブルを確かめる
7. schema.rbで確認
データベースの最新状況がここにまとめて表示される。自動生成されるこのファイルは閲覧専用につき注意。
8. 修正したいとき
1. 新規migration fileでremove_colmn
やadd_colmn
をする
そのままdef change
のときとdef up
/ def down
を使うときがあるぞ!
2. rake db:rollback STEP=n
SQLiteのデータベースへmigration fileを追加する前の状態へ時間を巻き戻せる呪文。rollback
するときは、rollback
前に該当ファイルをいじってはいけない。
#まとめ
- 慣れたらそんなに難しくない。はず。
- Gitの更新みたいにちゃんと手順を踏んで作っていく。
- 事前にちゃんと情報を整理して、設計しておくのと、実行前に見直しをしっかりする!
いくらお手軽データベース作成ツールとはいえ通常のコードの修正と比べると修正するのに手間がかかって面倒だから、はじめのうちは慎重につくるように心掛けたほうがいい気がする。