😽

【Rails】デプロイ後マイグレーションファイル修正の注意点

2023/11/26に公開

自分がやらかした初学者的ミスから学んだことを記録としてここに残します。

背景

今回、デプロイ後に発生したエラーの原因がマイグレーションファイルの記述だったため、cloud9上で修正し、rails db:migrate:resetを行いgitにpushし、EC2上でpullしてbundle exec rails db:migrate RAILS_ENV=productionを行いましたがうまく反応せずエラーが直らない現象がありました。

原因

原因は、本番環境でのデータベースをリセットしていないことでした。マイグレーションファイルは作成した日付で見られているため、データをリセットしないと中身まで反映がされないことが理由でした。開発環境と同じで本番環境でもリセットが必要なのを完全に失念していて起きた単純なミスでした笑

本番環境でのデータベースリセット

本番環境でのリセットは下記のコマンドになります。

[ec2-user@ip-xx-xx-xx-xx アプリケーション名]$ RAILS_ENV=production DISABLE_DATABASE_ENVIRONMENT_CHECK=1 bundle exec rails db:drop
[ec2-user@ip-xx-xx-xx-xx アプリケーション名]$ rails db:create RAILS_ENV=production
[ec2-user@ip-xx-xx-xx-xx アプリケーション名]$ rails db:migrate RAILS_ENV=production

思ったこと

今回のポートフォリオ製作やリリース前であればデータのリセットは可能だと思いますが、
「実際の開発現場でリリース後のメンテナンス等でマイグレーションファイルの修正や追加がある場合はデータはどうなってしまうのか?」
気になってメンターの方に質問したところ、実際の開発現場では既存のデータをリセットできないため、別にマイグレーションファイルを作成し追加するのが主流とのこと。
その方法について下記の記事を紹介いただきました。
https://qiita.com/azusanakano/items/a2847e4e582b9a627e3a
自分もこのような場面に遭遇した際に上記記事のやり方を試して、その際に自分なりのアウトプットをここに記述できればと思います。
今日は些細なミスから学んだことの備忘録でした。

Discussion