Initialize Rails and Deploy to Heroku

Install Rails

Install the gem:

  • gem install rails

Create New Rails Project

Create a new project and cd into it:

  • rails new ProjectTest
  • cd ProjectTest

Change Gemfile to add PostgreSQL

Heroku works with PostgreSQL as backend database as it doesn’t support SQLite3, so you’ll have to add the pg gem in the Gemfile in a production group:

group :production do
gem 'pg'
end

IMPORTANT: After adding PostgreSQL to the production group in the Gemfile you’ll have to move the SQLite3 gem to a development group or delete it, if you work with PostgreSQL just delete it entirely but if you would like to keep SQLite3 for local development then move the gem to a dev group like this:

group :development do
# Access an IRB console on exception pages or by using <%= console %> anywhere in the code.
gem 'web-console', '>= 3.3.0'
gem 'listen', '>= 3.0.5', '< 3.2'
# Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring
gem 'spring'
gem 'spring-watcher-listen', '~> 2.0.0'
# Use sqlite3 as the database for Active Record
gem 'sqlite3'
end

This way Heroku won’t touch the SQLite3 gem.

Update Bundler

Lets update Bundler and install the gems excluding the production group:

  • bundle update
  • bundle install --without production

Install Heroku CLI

Open the terminal and proceed with the installation script:

  • wget -qO- https://cli-assets.heroku.com/install-ubuntu.sh | sh

After that, enter your Heroku credentials:

  • heroku login

And add you ssh keys:

  • heroku keys:add

We’ll get back to Heroku later, we have to make some changes to our code first.

Changing the Index page

Heroku doesn’t support the default index page of Rails, so let’s write a Hello World! as our index page to confirm it’s deploying correctly to Heroku.

Generate a controller with our index page:

  • rails generate controller Welcome index

Now open app/views/welcome/index.html.erb and change your index page as you like, for example:

<h1>Hello world!</h1>
<p>Yup! The deployment is working. Checkout <a href="https://codingodse.info">CodingDose()</a></p>

Setting the Root Page

Open the routes file in config/routes.rb and change the line:

  • get 'welcome/index'

For:

  • root 'welcome#index'

This is how the file should look:

Rails.application.routes.draw do
root 'welcome#index'
end

Test it Locally

Fire up the server with (s stands for server):

  • rails s

Go to http://localhost:3000/ and your index should be displaying

Add and Commit files

Newer versions of Rails add a git repository, unless there’s no repository initialized you will have to do it yourself with git init, then add the files and commit them:

  • git add .
  • git commit -am "initialize repository"

Deploy to Heroku

First, create a domain on heroku:

  • heroku create

And lets push the new repo to heroku’s servers:

  • git push heroku master

Final words

There you go, you setup a new Rails project, version control and a succesful deployment to Heroku :)