learnenough / rails_tutorial_sample_app_7th_ed

The reference sample app for the Ruby on Rails Tutorial (7th edition) by Michael Hartl
Other
73 stars 51 forks source link

Guide: Resolving Heroku Deployment Errors for Rails Apps with PostgreSQL (Rails Tutorial 7th Edition) #20

Open gxolivei opened 3 months ago

gxolivei commented 3 months ago

Fixing PostgreSQL Connection Issues for Rails Apps on Heroku (Rails Tutorial 7th Edition)

While following the 7th edition of the Ruby on Rails tutorial, I encountered issues deploying a Rails application to Heroku, specifically related to PostgreSQL database connections. This guide outlines how to resolve ActiveRecord::ConnectionNotEstablished errors when deploying Rails applications to Heroku. The steps below help ensure that other users can understand the problem, debug, and follow the instructions effectively.

Context

The issue arises when attempting to deploy a Rails application to Heroku, leading to an ActiveRecord::ConnectionNotEstablished error. This typically indicates problems with the PostgreSQL database setup on Heroku.

Prerequisites

Step 1: Discover Your Heroku App Name

Before starting, ensure you know your Heroku app's name. If you're unsure, you can discover it by listing all your Heroku apps:

$ heroku apps

Look for the name of your application in the output. If you haven't created a Heroku app yet, create one with:

$ heroku create

Step 2: Verify PostgreSQL Add-on

Check if your app has the PostgreSQL add-on:

$ heroku addons -a your-app-name

If a PostgreSQL database isn't listed, you need to add one.

Step 3: Add PostgreSQL Database to Heroku

Provision a new PostgreSQL database for your application:

$ heroku addons:create heroku-postgresql -a your-app-name 

This command attaches a PostgreSQL database to your Heroku app.

Step 4: Configure database.yml

Update your database.yml for the production environment to use Heroku's DATABASE_URL:

   .
   .
   .

production:
  adapter: postgresql
  encoding: unicode
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
  url: <%= ENV['DATABASE_URL'] %>

This configuration allows Rails to dynamically connect to the provided PostgreSQL database.

Step 5: Run Database Migrations on Heroku

Apply your database migrations on Heroku to ensure your database schema is up to date:

$ heroku run rails db:migrate -a your-app-name

Step 6: Deploy and Verify

Deploy your application with:

$ git push heroku main

Then, verify the deployment by visiting your application's URL.

Troubleshooting

If issues persist, review the Heroku logs for more insights:

$ heroku logs --tail -a your-app-name

Address any database connection or migration errors indicated in the logs.

Conclusion

This guide provides a comprehensive approach to resolving PostgreSQL connection issues encountered when deploying a Ruby on Rails application to Heroku, as outlined in the 7th edition of the Rails tutorial. By following these steps, developers can ensure a smooth deployment process on Heroku.

kgilpin commented 1 month ago

This is a nice guide. I believe Heroku will run your migrations automatically each time you deploy (including the first time).