So you want to convert your SQLite database in Rails to Postgre? That is why you are here right? Let’s get started. 😊
Check Postgre Version
First, you have to check if you have Postgre via the command line. If you have Ubuntu then Postgre should come installed by default.
If nothing comes up then you will have to install Postgre.
For New Projects
If you are creating a new Rails project, you can specify on creating that you will opt-out of the standard SQLite setup in favor of Postgre.
rails new my_app --database=postgresql
This should take care of all your woes. If it doesn’t then read on.
For Existing Projects
First, you will need to comment out
gem 'sqlite' . Then add Postgre to your Gemfile and
bundle install .
1. gem 'pg' 2. bundle install
You will need to modify your
database.yml file to pull from Postgre for all three environments.
development:adapter: postgresqldatabase: my_database_developmentusername: my_usernamepassword: my_passwordpool: 5timeout: 5000
test:adapter: postgresqldatabase: my_database_testusername: my_usernamepassword: my_passwordpool: 5timeout: 5000production:adapter: postgresqldatabase: my_database_productionusername: my_usernamepassword: my_passwordpool: 5timeout: 5000
With Postgre, each environment has its own separate database, username, and password. This was an ah-ha moment for me. It is something you do not think about when you are coming from using SQLite.
This should take care of it. It is a best practice to store your username and password inside a .env variable. You should be able to
rails db:migrate any changes no problem now!