Rails 6 adds rails db:prepare to migrate or setup a database

Akhil Gautam

By Akhil Gautam

on December 10, 2019

This blog is part of our  Rails 6 series.

Rails 6 adds rails db:prepare to migrate or setup a database if it doesn't exist.

Before Rails 6, we had to run the following tasks to set up the database.

1# create the database
2rails db:create
3
4# run the migrations
5rails db:migrate
6
7# prepopulate the database with initial/default data
8rails db:seed  

Rails 6

Rails 6, adds rails db:prepare to get rid of running all the above tasks individually. rails db:prepare first calls the migrate to run the migrations, but if the database doesn't exist, migrate throws an ActiveRecord::NoDatabaseError. Once it is catched, it performs the following operations:

  • Creates the database.
  • Loads the schema.
  • Seeds the database.

Thus, rails db:prepare saves a lot of time spent on running database tasks individually while setting up an application and finishes it with just one command.

Here is the relevant pull request.