Alex Merced's Data, Dev and AI Blog

Article

Ruby on Rails Tutorial - Heroku API Deployment

My Learning Ruby on Rails Video Playlist: https://www.youtube.com/playlist?list=PLY6oTPmKnKbYlAqVHgzZl5lou54bizdbV

Setup#

This tutorial requires that you've already installed

  • ruby
  • rails

Create a new rails project

rails new dogs --api -d postgresql

cd into the dogs folder

Configuring your Database#

Assuming you have a local postgres server make sure you write your database.yml like so. Make sure the username and password matches your local postgres user.

default: &default
  adapter: postgresql
  encoding: unicode
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
  # Make sure the below reflects your local postgres user
  port: 5432
  host: localhost
  username: test5
  password: test5

development:
  <<: *default
  database: mice_development

test:
  <<: *default
  database: mice_test

production:
  <<: *default
  url: <%= ENV['DATABASE_URL'] %>

Uncomment gem 'rack-cors' in your gemfile then run bundle install

Edit your config/initializers/cors.rb to look like so. This will allow all origins to make request, customize to your liking.

Rails.application.config.middleware.insert_before 0, Rack::Cors do
  allow do
    origins '*'

    resource '*',
      headers: :any,
      methods: [:get, :post, :put, :patch, :delete, :options, :head]
  end
end

Create a quick API#

Run the following commands for a basic dogs api...

rails g scaffold dog name:string age:integer breed:string

rails db:create

rails db:migrate

Add the following in db/seeds.rb


Dog.create(name: "Sparky", age: 5, breed: "Bulldog")
Dog.create(name: "Spot", age: 5, breed: "Dalmation")
Dog.create(name: "Goldy", age: 5, breed: "Golden Retriever")

run the command rails db:seed

Test the Api#

rails server

Go to localhost:3000/dogs to see if our dogs are there, if so we are ready to deploy.

Deploy to Heroku#

  • push your code to github (make sure the root of the repo is the same folder as the gemfile)
  • create a new heroku project and connect it to your github repo
  • using the heroku cli run the following commands

heroku run rails db:migrate --app=youAppName && heroku run rails db:seed --app=youAppName *make sure to replace yourAppName with the name of your heroku project

NOTE If you run into a weird deployment error about your bundler platform, refer to this stack overflow for a solution: https://stackoverflow.com/questions/43429685/how-can-i-resolve-your-bundle-only-supports-platforms-x86-mingw32-but-your

That's it, go to https://HEROKUURL/dogs

and you should see your dogs!!!

Newsletter

Get new posts in your inbox

Deep dives on Apache Iceberg, lakehouse architecture and applied AI. No spam, unsubscribe anytime.

Subscribe

Menu

Search

Type at least two characters.