もふもふ技術部

IT技術系mofmofメディア

【Rails】よく使う・知っていると便利なmigrateコマンド

今回はよく使う・知っていると便利なmigrateコマンドを紹介します!

マイグレートする

rails db:migrate

特定の環境のみマイグレートする

開発環境の場合(デフォルトなので明示的に指定することはあまりないと思います)

rails db:migrate RAILS_ENV=development

テスト環境の場合

rails db:migrate RAILS_ENV=test

本番環境の場合

rails db:migrate RAILS_ENV=production

マイグレーションの状態を確認する

rails db:migrate:status

以下のように出力されます。

 Status   Migration ID    Migration Name
--------------------------------------------------
   up     2024100100000  Create users
   up     2024100200000  Create groups
   up     2024100300000  Create posts
   up     2024100400000  Create notices
   up     2024100500000  Create animals

特定のバージョンだけダウンする

rails db:migrate:down VERSION=2024100300000

特定のバージョンだけアップする

rails db:migrate:up VERSION=2024100300000

特定のバージョンまでマイグレートする

rails db:migrate VERSION=20240100300000

ロールバックする

rails db:rollback

2つ以上のバージョンをロールバックする

rails db:rollback STEP=3

ロールバックして、マイグレートする

rails db:migrate:redo

2つ以上のバージョンをロールバックして、マイグレートする

rails db:migrate:redo STEP=3

DBを作成する

rails db:create

DBを削除する

rails db:drop

シードデータを投入する

rails db:seed

DBをセットアップする

DBの作成、スキーマの読み込み、シードデータの投入が行われます。
スキーマの読み込みでは、マイグレーションファイルは実行されないので、スキーマファイルとマイグレーションファイルに差異がある場合は場合は整合性がとれなくなる可能性があるので注意が必要です。

rails db:setup

DBをリセットする

DBを削除してからセットアップを行います。

rails db:reset

注意点

開発途中では、downup はとても便利ですが、本番適用されている場合や mainブランチなどにマージされている場合はマイグレーションファイルをむやみに修正するのは望ましくありません。
自分の環境と本番環境、チームメンバーの環境で不整合が起きてしまう可能性があります。
便利だからこそ、使い所には注意したいですね。