migration集約
What
migrationファイルが増殖してきたため、整理します
環境
Solution
squasherというgemを使用します。
[参考] https://github.com/jalkoby/squasher
Gemfile
Gemfileに以下を記述します。
group :tools do gem 'squasher', '>= 0.6.0' gem 'capistrano' gem 'rubocop' end
migrationファイルの統合
まずは、gemをインストールします。
$ bundle install
squasherコマンドを使えるようにします。
$ bundle binstubs bundler --force $ bundle binstub squasher $ bin/squasher >Squasher 0.6.2
統合します。
$ bin/squasher <何年以降のmigrationファイルを統合するか> -m <Railsのバージョン> $ bin/squasher 2021 -m 5.2
migrationファイルが統合 (削除) され、xxxxxx_init_schema.rbが作成されます。
Rails5のバグで外部キーの情報は見えませんが、念のため、t.referenceで再度記述しておきます。
[参考]
https://github.com/rails/rails/issues/35207
最後に、以下でTableをリセットすると、schema.rbにも同じ情報が記述されます。
$ rails db:migrate:reset