How to use the command 'rails db' (with examples)
The command ‘rails db’ is a powerful command in Ruby on Rails that provides various database-related subcommands. It allows you to perform actions such as creating databases, accessing the database console, running migrations, and more. This article will illustrate each of these use cases with examples.
Use case 1: Create databases, load the schema, and initialize with seed data
Code:
rails db:setup
Motivation: This use case is helpful when you want to create your databases, load the schema, and initialize them with seed data. It saves you time by automating the process.
Explanation:
The rails db:setup
command creates the databases defined in the current environment, loads the schema, and initializes them with seed data defined in the db/seeds.rb
file.
Example output:
Created database 'development'
Created database 'test'
Migrating database 'development'
...
Seeding database 'development'
Use case 2: Access the database console
Code:
rails db
Motivation: Accessing the database console is useful when you need to execute SQL queries directly or perform database operations.
Explanation:
The rails db
command opens the database console, allowing you to interact with the database using SQL commands.
Example output:
SQLite version 3.36.0 2021-06-18 18:36:39
Enter ".help" for usage hints.
sqlite>
Use case 3: Create the databases defined in the current environment
Code:
rails db:create
Motivation: This use case is handy when you want to explicitly create the databases defined in the current environment. It ensures that all the necessary databases are set up correctly.
Explanation:
The rails db:create
command creates the databases defined in the current environment. It checks if the databases already exist and does nothing if they do.
Example output:
Created database 'development'
Created database 'test'
Use case 4: Destroy the databases defined in the current environment
Code:
rails db:drop
Motivation: When you no longer need the databases defined in the current environment, it is essential to clean up and remove them. This use case allows you to easily drop the databases.
Explanation:
The rails db:drop
command destroys the databases defined in the current environment. It prompts for confirmation before dropping the databases.
Example output:
Dropped database 'development'
Dropped database 'test'
Use case 5: Run pending migrations
Code:
rails db:migrate
Motivation: When you have pending migrations that need to be applied to the database, running them is crucial for keeping your database schema up to date.
Explanation:
The rails db:migrate
command runs any pending migrations, applying the changes to the database schema. It ensures that the database structure is consistent with the migration files.
Example output:
Migrating database 'development'
== 20220101000001 CreateUsers: migrating ======================================
-- create_table(:users)
-> 0.0044s
== 20220101000001 CreateUsers: migrated (0.0234s) =============================
Migrating database 'test'
== 20220101000001 CreateUsers: migrating ======================================
-- create_table(:users)
-> 0.0043s
== 20220101000001 CreateUsers: migrated (0.0234s) =============================
Use case 6: View the status of each migration file
Code:
rails db:migrate:status
Motivation: When you want to check the status of your migration files, this use case provides a convenient way of viewing their details.
Explanation:
The rails db:migrate:status
command shows the status of each migration file. It displays information such as whether a migration has been applied or not.
Example output:
database: development
Status Migration ID Migration Name
--------------------------------------------------
up 20220101000001 CreateUsers
down 20220101000002 AddColumnsToUsers
database: test
Status Migration ID Migration Name
--------------------------------------------------
up 20220101000001 CreateUsers
down 20220101000002 AddColumnsToUsers
Use case 7: Rollback the last migration
Code:
rails db:rollback
Motivation: Sometimes, you may need to undo the last applied migration. This use case allows you to easily rollback the most recent migration.
Explanation:
The rails db:rollback
command rolls back the last migration, undoing the changes made to the database schema by that migration.
Example output:
Migrating database 'development' to version 20220101000001: CreateUsers
== 20220101000001 CreateUsers: reverting ======================================
-- drop_table(:users)
-> 0.0044s
== 20220101000001 CreateUsers: reverted (0.0156s) =============================
Migrating database 'test' to version 20220101000001: CreateUsers
== 20220101000001 CreateUsers: reverting ======================================
-- drop_table(:users)
-> 0.0043s
== 20220101000001 CreateUsers: reverted (0.0156s) =============================
Use case 8: Fill the current database with data defined in db/seeds.rb
Code:
rails db:seed
Motivation:
When you want to populate your database with initial data defined in the db/seeds.rb
file, this use case enables you to easily accomplish that task.
Explanation:
The rails db:seed
command loads the data defined in the db/seeds.rb
file into the current database. It is commonly used to populate the database with initial records.
Example output:
Seeding database 'development'
Seeding database 'test'
Conclusion:
The ‘rails db’ command provides a comprehensive set of subcommands for managing databases in Ruby on Rails. From setting up databases, running migrations, and accessing the console, to dropping databases and seeding data, this versatile command offers great flexibility and convenience. By understanding and utilizing these use cases, you can efficiently manage and interact with your databases in your Ruby on Rails applications.