migration集約

What

migrationファイルが増殖してきたため、整理します

環境

Rails: 5.2
MySQL: 5.6

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