I’ve been “drinking my own champagne” on an app I’m hoping to release soon - a great practice if you want to really improve the experience for customers. In this process, I’ve created relevant data on production and needed to bring it in locally to work on a few edge cases I discovered.
In this article, I’m going to quickly walk you through how to do that using Heroku, PostgreSQL and Rails.
Recreating the database
Ok, so first things first - you’ll need to recreate your database.
In Rails, this is a two step process of dropping and then creating the database:
Drop the database
bundle exec rails db:drop
Create the database
bundle exec rails db:create
Creating a backup
We’ll need to create a “capture” of the database before importing:
heroku pg:backups:capture --app my-app-name-on-heroku
Once the “capture” is done, we need to download it:
heroku pg:backups:download --app my-app-name-on-heroku
⚠️ NOTE: This will download a
latest.dump in the current directory that you’re in. So make sure you’re ignoring
.dump files in your
.gitignore so that you don’t accidentally check it in.
Importing your backup
Finally, we import it:
pg_restore --verbose --clean --no-acl --no-owner -h DB_HOST -U postgres -d DATABASE_NAME latest.dump
DATABASE_NAME with the connection values you use to connect to the database.
Changing the environment
In Rails, there is an
ar_internal_metadata table that keeps track of settings used for ActiveRecord, the ORM (Object-relational mapper) in Rails. We’ll need to update the
environment key to be
development - otherwise you’ll run into some weird issues.
Jump to top of page