DEV Community

Cover image for How to Deploy Rails API to Heroku (ruby-2.6.1) (PostgreSQL)
Raynaldo Sutisna
Raynaldo Sutisna

Posted on

4 1

How to Deploy Rails API to Heroku (ruby-2.6.1) (PostgreSQL)

Introduction

I always have a problem with production, and I hate it. However, it is really important to host our project. After I finished my Flatiron class for 15 weeks, I decided to host my projects and created this tutorial. I hope it will be helpful.

GitHub logo raaynaldo / herokuy-deploy-test

learn how to deploy rails API to heroku

Add Procfile and Procfile.dev in Rails Project

Create Procfile and Procfile.dev inside the root folder

# root/Procfile
web: bin/rails server -p ${PORT:-5000} -e $RAILS_ENV
release: bundle exec rails db:migrate
release: bundle exec rails db:seed
# db:seed is optional, if you use db:seed it will reseed data every time you push)
# add any other commands
Enter fullscreen mode Exit fullscreen mode

procfile

Push the changes.

Install Heroku CLI

Follow this documentation.

Create New App

Run this command in inside rails folder

heroku create --stack heroku-18
Enter fullscreen mode Exit fullscreen mode

I'm using heroku-18 stack because my ruby version is ruby-2.6.1. if your ruby version is supported for heroku-20, you do not need this command.

Change the Heroku app name (optional)

heroku apps:rename herokuy-deploy-test
Enter fullscreen mode Exit fullscreen mode

Using credentials.yml / master.key (Optional)

If you are using master.key, you should set it up to the Heroku. master.key will not push to the repository because it includes to the .gitignore.

heroku config:set RAILS_MASTER_KEY=`cat config/master.key`
Enter fullscreen mode Exit fullscreen mode

Source

Go to Heroku Dashboard

Heroku App will be available.
heroku-dashborad

  • Click the new app and choose the deploy section.
  • Connect with your GitHub repository. connect-github
  • Turn on Enable Automatic Deploys enable-automatic-deploys
  • Choose a branch to deploy, and Deploy Branch. deploy-branch

Try my Rails API

Bonus: Set origin CORS dynamically (on Development or on Production)

It will be very helpful, so we do not need to change the cors whenever we are in production or development.

# config/environments/development.rb
Rails.application.configure do
    ...

    # cors origns
    config.allowed_cors_origins = "*"
end
Enter fullscreen mode Exit fullscreen mode
# config/environments/production.rb
Rails.application.configure do
    ...

    # cors origns
    config.allowed_cors_origins = "front-end link without http://"
    # ex: config.allowed_cors_origins = "netlikuy-deploy-test.netlify.app"
end
Enter fullscreen mode Exit fullscreen mode
# config/initializers/cors.rb
Rails.application.config.middleware.insert_before 0, Rack::Cors do
    allow do
        origins Rails.application.config.allowed_cors_origins

        ...
    end
end
Enter fullscreen mode Exit fullscreen mode

Deploy your React App?



Please leave a comment below, and let me know if you need help:)

Do your career a big favor. Join DEV. (The website you're on right now)

It takes one minute, it's free, and is worth it for your career.

Get started

Community matters

Top comments (2)

Collapse
 
ccdaniele profile image
Daniel

Thank you very much!!

Collapse
 
raaynaldo profile image
Raynaldo Sutisna

You're welcome. Hope it will be helpful!

AWS Security LIVE!

Tune in for AWS Security LIVE!

Join AWS Security LIVE! for expert insights and actionable tips to protect your organization and keep security teams prepared.

Learn More

👋 Kindness is contagious

Discover a treasure trove of wisdom within this insightful piece, highly respected in the nurturing DEV Community enviroment. Developers, whether novice or expert, are encouraged to participate and add to our shared knowledge basin.

A simple "thank you" can illuminate someone's day. Express your appreciation in the comments section!

On DEV, sharing ideas smoothens our journey and strengthens our community ties. Learn something useful? Offering a quick thanks to the author is deeply appreciated.

Okay