LoginSignup
2
0

More than 5 years have passed since last update.

Rails6 のちょい足しな新機能を試す42(multi-db db:migrate:status編)

Posted at

はじめに

Rails 6 に追加されそうな新機能を試す第42段。 今回は、 multi-db db:migrate:status 編です。
Rails 6 では、 複数データベースに対応しているため、 db:migrate:status も複数データベースに対応しています。

Ruby 2.6.3, Rails 6.0.0.rc1 で確認しました。Rails 6.0.0.rc1 は gem install rails --prerelease でインストールできます。

$ rails --version
Rails 6.0.0.rc1

今回の準備

今回は、 Rails6 のちょい足しな新機能を試す35(複数データベース migration --database オプション編) をベースとして進めます。第35段まで終わっている状態を前提として話しを進めます。

一旦DBを作り直す

必要ないかも知れませんが、念のため、綺麗な状態から作業したいため、DBを作り直すことにしました。

bin/rails db:drop db:create db:migrate

カラムを追加するマイグレーションを作成する

これもまあ、必要ないと言えば必要ない気がするのですが、 backboneusers テーブル に email カラムを、
librarybooks テーブルに isbn カラムを追加するマイグレーションを作成します。

library 側に追加するためには、 --database (--db) オプションが必要です。

$ bin/rails g migration AddEmailToUser email
$ bin/rails g migration AddIsbnToBook isbn --database=library

db:migrate:status で確認する

db:migrate:status で確認すると、両方のデータベースのマイグレーションの状況が確認できます。

$ bin/rails db:migrate:status

database: backbone_development

 Status   Migration ID    Migration Name
 --------------------------------------------------
    up     20190608225735  Create user
   down    20190622004922  Add email to user


database: library_development

 Status   Migration ID    Migration Name
 --------------------------------------------------
    up     20190608225808  Create book
   down    20190622005021  Add isbn to book

どちらか1つのデータベースのマイグレーションの状態を知りたい場合は、 status に続けて :backbone:library を指定します。

$ bin/rails db:migrate:status:backbone

database: backbone_development

 Status   Migration ID    Migration Name
 --------------------------------------------------
    up     20190608225735  Create user
   down    20190622004922  Add email to user

$ bin/rails db:migrate:status:library

database: library_development

 Status   Migration ID    Migration Name
 --------------------------------------------------
    up     20190608225808  Create book
   down    20190622005021  Add isbn to book

試したソース

試したソースは以下にあります。
https://github.com/suketa/rails6_0_0rc1/tree/try042_multidb_migrate_status

注意

上のブランチで試す場合は、以下のように実行すれば、 bin/rails db:migrate:status の結果が同じになります。

$ bin/rails db:drop db:create
$ bin/rails db:migrate:backbone VERSION=20190608225735
$ bin/rails db:migrate:library VERSION=20190608225808

参考情報

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0