はじめに
不要な機能削除が発生した際に、その機能でしか使ってなかったようなテーブルがあった場合は原則削除したほうがよいと思う。不要なソースコードやテーブルが残っていると混乱を招くだけなので。(ただし、なにかしらの理由で残しておいたほうがいい場合を除く)
ただし、いきなり削除すると問題があった時に面倒なので、いったんrenameしてアクセスできなくして、しばらく運用して問題なければdumpをとって削除する。万が一問題があったら元のテーブル名に戻す。
注意
プロジェクトごとにやり方があると思うので、あくまで参考程度にしてください。
手順
不要な機能の削除方法
- 不要な機能のソースコードを削除する
- 別の場所で共通で使っている部分がある場合があるので注意する
- 不要な機能の削除に関わるspecを削除する
テーブルのrename
- codeを全検索して model が使われていないことを確認する
- テーブルをrenameするmigrationファイルを作成する
- no_more_use_<元のテーブル名>のような名前にすると、もう使わないテーブルってことがわかるのでよさそう。
- https://engineering.mercari.com/blog/entry/2017-05-26-104104/
- ローカルでrails db:migrateして、ローカルDBにrenameを反映する
- ローカルで動作確認する
- テストが通ることを確認する
- stagingデプロイして動作確認する
- 本番デプロイし問題がないか監視する
本番DB反映後、問題なかった場合
- 1ヶ月くらい運用してみて、問題がなさそうであれば念の為dumpをとってテーブルを削除する
本番DB反映後、renameによる問題が発生した場合
- railsのmigration機能を使っている場合、本番DBでは
rails db:rollback
しないこと (migrationのstatusとの整合性など、色々ややこしいことになる) - まず発生している問題が本当にrenameによるものかしっかり調査する。
- 問題の原因がrenameによるものであると決まった場合、developからfeatureブランチをきって、元のテーブル名に戻すmigrationファイルを作成する
- 問題が解決しているか確認する