Additional database-specific rake tasks for multi-database users

Hello,

I’m in the process of converting a Rail application over to Rails 6 from Rails 5. In that application, we have a large number of databases and we do some parallelization to speed up creation, migration, and test preparation for those databases.

Previously, we were using multiverse for this. When we ran a top-level bundle exec rails db:migrate, the database would be dumped to the schema file. Today in Rails 6, that’s still the case when running all migrations, but when running database-specific migrations with bundle exec rails db:migrate:DATABASE, the schema is not dumped.

Unfortunately, that means that we can only parallelize the creation and migration of the databases. After that, we have to serially run bundle exec rails db:structure:dump and bundle exec rails db:test:prepare.

I’d like to propose supporting database-specific tasks for db:structure:dump and db:test:prepare to handle this situation. I’m willing to open PRs to support this assuming this seems reasonable to everyone.

Thanks!

  • Kyle Thompson

Sounds great Kyle! Looking forward to your PRs.