This blog is part of our Rails 6.1 series.

Rails 6.1 deprecates rails db:structure:load and rails db:structure:dump tasks.

Before Rails 6.1, executing rake db:schema:dump would dump db/schema.rb file. And executing rake db:structure:dump would dump db/structure.sql file.

Rails provides config.active_record.schema_format setting for which the valid values are :ruby or :sql. However, since there are specific tasks for db:structure and db:schema this value was not really being used.

Changes in Rails 6.1

In Rails 6.1 the Rails team decided to combine the two different tasks into a single task. In Rails 6.1 rails db:structure:dump and rails db:structure:load have been deprecated and the following message would be shown.

Using `bin/rails db:structure:dump` is deprecated and will be removed in Rails 6.2. Configure the format using `config.active_record.schema_format = :sql` to use `structure.sql` and run `bin/rails db:schema:dump` instead.

Now Rails will start taking into the account value set for config.active_record.schema_format.

rails db:schema:dump and rails db:schema:load would do the right thing based on the value set for config.active_record.schema_format.

Check out the pull request for more details on this.