はじめに
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
カラムを追加するマイグレーションを作成する
これもまあ、必要ないと言えば必要ない気がするのですが、 backbone
の users
テーブル に email
カラムを、
library
の books
テーブルに 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