【Ruby on Rails】マイグレーションに関する主なコマンド一覧

Ruby on Rails

毎回忘れるので、マイグレーションコマンドをまとめてみました。

データベースを作成

db:create

データベースを作成します。

# 開発、テスト環境のDBを作成
rails db:create

config/database.ymlで定義された設定に従って、データベースが作成されます。

データベースの初期設定はsqlite3です。

dbディレクトリ配下にdevelopment.sqlite3test.sqlite3が作成されます。


本番環境のDBを作成したい場合

rails db:create RAILS_ENV=production

データベースの設定

db:setup

データベースの初期設定をしてくれます。

rails db:setup

データベースの作成(rails db:create)
スキーマの読み込み(rails db:schema:load)
シードデータを適用(rails db:seed)

上記のコマンドと同じ実行結果です。

データベースの削除

db:drop

rails db:createで作成したデータベースファイルを削除します。

rails db:drop

データベースをリセット

db:reset

データベースを削除し、再設定します。

rails db:reset

データベースを削除(rails db:drop)
データベースの設定(rails db:setup)

上記のコマンドと同じ実行結果です。

:このコマンドはマイグレーションを実行するのではなく、rails db:schema:load によって、スキーマファイルからDBを作成しているので、マイグレーションをロールバックできなくなった場合に、rails db:resetを実行しても復旧できないことがあります。

db:migrate:reset

データベースを削除し、再度データベースを作成、その後マイグレーションを実行します。

rails db:migrate:reset

データベースを削除(rails db:drop)
データベースの作成(rails db:create)
マイグレーションの実行(rails db:migrate)

上記のコマンドと同じ実行結果です。

db:resetとdb:migrate:resetの違い

rails db:reset

スキマーファイル(db/schema.rb)からデータベースを作成します。マイグレーションは実行されません。

これは、マイグレーションの全履歴を一から繰り返すよりも、rails db:schema:loadでスキーマファイルを読み込む方が、高速かつエラーが起きにくい傾向があるからです。

rails db:migrate:reset

rails db:createデータベース作成後、マイグレーションを実行します。

マイグレーションをロールバックして、なにかしらの変更した後にDBをリセットしたい場合はこちらを使います。

マイグレーションの実行

db:migrate

未実行のマイグレーションを全て実行します(バージョンを上げる)。

rails db:migrate

未実行のchangeまたはupメソッドを実行し、未実行のマイグレーションがない場合は何もせずに終了します。

実行順序は、マイグレーションの日付(先頭の数字部分)に基づきます。

db:schema:dumpも同時に実行されます。


特定のマイグレーションだけ実行したい場合、

rails db:migrate VERSION=20180907140025

VERSIONはマイグレーション名の先頭にある数字部分(日時部分)を指定します。

マイグレーションをロールバック

db:rollback

直前に行ったマイグレーションをロールバック(実行前の状態に戻す)します。
(バージョンを一つ下げる)

rails db:rollback

changeメソッドを逆転実行するかdownメソッドを実行する形で直前のマイグレーションにロールバックします。


複数回ロールバックしたい場合

rails db:rollback STEP=3

STEP=ロールバックする回数

db:migrate:redo

マイグレーションをロールバックしてから、再度マイグレーションを実行する。

rails db:migrate:redo

バージョンを一つ戻す(rails db:rollback)
バージョンを一つ上げる(rails db:migrate)

上記のコマンドと同じ実行結果です。

バージョンは最終的に変更しませんが、バージョンを戻す処理が想定通り動作することを確認できます。

データベースのバージョンを確認

db:version

データベースに適用されたマイグレーションのバージョン一覧を確認できます。

rails db:version

マイグレーションの実行履歴を確認

db:migrate:status

マイグレーションを実行・ロールバックした履歴一覧を確認できます。

rails db:migrate:status

データベースにダミーデータを追加

テーブルやモデルなどの準備が出来た後、それらにダミーデータを追加できます。

rails db:seed

db/seed.rbに記載したスクリプトが実行されます。

スキーマファイルの設定

schema:dump

現在のデータベースからスキーマファイルを生成します。

rails db:schema:dump

基本はrails db:migrateと共に実行されます。

schema:load

スキーマファイルからデータベースを作成します。

rails db:schema:load

基本はrails db:setupと共に実行されます。

まとめ

マイグレーションのコマンドをまとめてみました。

railsガイドにより詳細が載っているので、気になる方はどうぞ。

Active Record マイグレーション - Railsガイド
Active Recordのマイグレーション (migration) を使用して、データベースを構造化された方法で整然と変更する方法について解説します。

コメント

タイトルとURLをコピーしました