こんにちは。
寒さにより、日に日に朝起きられなくなってきていますが、そんな時におすすめな行動は、起きた瞬間(トイレにも行かず)に外直行。秒で目覚めます。
どうもハチマキです。
はじめに
rails db:migrateする際に、いくつかStatusがdownにあり、特定ファイルのみ実行したいのに実行できない状態になりました。(他のdown状態のファイルがmigrateされる)
今回は特定ファイルのみをmigrateする方法に関して、書いていきたいと思います。
では早速行きましょう!
本日の概要 : 特定のマイグレーションファイルのみを実行する
エラー例
新たにカラム追加をしたく、rails db:migrateを実行した際に、他のファイルも同時に実行されてしまう
※今回追加したいカラム → add_column(:post, :text, :string)
$ bundle exec rails db:migrate ・・・・・・ ===ここから == AddColumnsForWearConfortable: migrating =================================== -- add_column(:user, :age :integer) -> 4.0391s -- add_column(:user, :birthday :date) -> 2.2989s ===ここまでが不要 == AddPurchaseLocationToContacts: migrating ================================== -- add_column(:post, :comment, :text) -> 0.0357s ・ ・ ・
原因
migrate未実行のファイルが読み込まれている
解決方法
実行することは、2つ!
1. migrate未実行ファイルを確認する
$ bundle exec rails db:migrate:status database: omgspreedevelopment Status Migration ID Migration Name -------------------------------------------------- down 201202-------- 〇〇 up 201202100------ 〇〇 up 201202100------- 〇〇 down 20201------------ 〇〇
上記コマンドを実行すると、現在のmigrateのstatusを確認できます。
2. Migration IDを指定してコマンドを実行する
反映させたいMigration IDを指定することで、指定した特定ファイルのみが実行されます。
※statusがupになっているファイルはすでにmigrate済みです
$ bundle exec rails db:migrate:up VERSION=20201------------
これで完了です!