- アプリ制作途中にマイグレーションファイルの修正が必要になった。なんとか修正することができたので忘備録として記事にします。
経緯
-
ログイン機能
を実装するためdevise
をインストール - 不要な機能をコメントアウトし忘れ
rails db:migrate
を実施。 - 実施後に不要な機能を削るため
マイグレーションファイル
の修正に取り掛かる。
まずはマイグレーションファイル
の修正について検索し、次のコマンドを実施
ターミナル
rails db:rollback
すると以下の様にエラーが発生
Running via Spring preloader in process 89570
== 20220715104214 AddDeviseToUsers: reverting =================================
rake aborted!
StandardError: An error has occurred, this and all later migrations canceled:
ActiveRecord::IrreversibleMigration
/Users/kuramotokansei/Desktop/sumple_app/db/migrate/20220715104214_add_devise_to_users.rb:49:in `down'
<internal:/Users/kuramotokansei/.rbenv/versions/3.0.3/lib/ruby/3.0.0/rubygems/core_ext/kernel_require.rb>:85:in `require'
<internal:/Users/kuramotokansei/.rbenv/versions/3.0.3/lib/ruby/3.0.0/rubygems/core_ext/kernel_require.rb>:85:in `require'
-e:1:in `<main>'
Caused by:
ActiveRecord::IrreversibleMigration: ActiveRecord::IrreversibleMigration
/Users/kuramotokansei/Desktop/sumple_app/db/migrate/20220715104214_add_devise_to_users.rb:49:in `down'
<internal:/Users/kuramotokansei/.rbenv/versions/3.0.3/lib/ruby/3.0.0/rubygems/core_ext/kernel_require.rb>:85:in `require'
<internal:/Users/kuramotokansei/.rbenv/versions/3.0.3/lib/ruby/3.0.0/rubygems/core_ext/kernel_require.rb>:85:in `require'
-e:1:in `<main>'
Tasks: TOP => db:rollback
(See full trace by running task with --trace)
翻訳してみた
標準的なエラー:エラーが起こりました。これ以降の全てのマイグレーション
は中止されました。
中止されたマイグレーションファイル
の場所
不可逆なActiveRecord
の内容
--trace
を実行して完全な痕跡を参照してください。
解決方法
どうやら一度rails db:migrate
を実行するとrails db:rollback
が実行出来ないActiveRecord
があるらしい。
今回はローカルのみでチーム開発でないこと、とくにデータベース
に保存しているデータ
などもないことから以下の方法を試した。ただし、前提としてマイグレーションファイル
は 修正済み とする。
rails db:drop #データベースを削除
↓
rails db:create #データベースを作成
↓
rails db:migrate #マイグレーションを実行
マイグレーション
が正常に適用されているか確認
rails db:migrate:status
#上記実行結果
Running via Spring preloader in process 90546
database: sumple_app_development
Status Migration ID Migration Name
--------------------------------------------------
up 20220714065607 Create presents
up 20220714080540 Create users
up 20220715104214 Add devise to users
status
がup
だとデータベース
に反映されている状態らしい
とりあえず今回は理解できていないがなんとか突破できた。今後理解を深め修正していきます。