Now that we got a working application, the world is ready to see it. Unfortunately, for now we can only run it locally, which is not a feasible way for us to show off our new shiny application.
First, you'll need to update two lines in the
app/assets/stylesheets/pages/landing.scss file; otherwise the images will be broken when we deploy (bring online) your application.
⌘ + F, find the
background: url(../img/intro-bg.jpg) no-repeat center center; line and replace it with
background: image-url("img/intro-bg.jpg") no-repeat center center;.
background: url(../img/intro-bg.jpg) no-repeat center center; and also replace it with
background: image-url("img/banner-bg.jpg") no-repeat center center;
If you have added other background urls, keep in mind to replace
url helper with
image-url for them as well.
Please also double check that your all stylesheets have
.scss extension. For example,
In order to install the production database, in your terminal run this command:
$ brew install postgresql
Second step will be adding the following gems to
group :production do gem 'pg' gem 'thin' gem 'rails_12factor' end
rails-12factor gem will enable features such as static asset serving and logging on Heroku. The
pg gem is the Ruby interface to the PostgreSQL database. It is highly recommended to be used instead of SQLite, which is not intended as a production grade database. That is why we will also find
gem 'sqlite3' and move it to development and test groups only, like this:
gem 'sqlite3', group: [:development, :test]
After that run
bundle install in your console.
$ bundle install
Next, in order to deploy we need some way to effectively manage our local files and changes. We are going to use Git VCS. It will provide us with a suite of tools for file storage and tracking of changes in those files.
We have to initialize a new git repository within our application's root folder by running:
$ git init
Then we have to track changes by using
git add -A command, which translates to "Git, please start tracking all the files in current repository". So run it from your terminal:
$ git add -A
Finally, you need to commit your changes and provide a description of what you have changed. The good practice is to keep it rather descriptive as in future it might help both you and your colleagues.
$ git commit -m "my very first commit"
To be able to deploy to Heroku we need to install its client application. This can be done via
brew install herokuon MacOS. Heroku CLI provides a set of tools that facilitate communication of our local machine with Heroku servers that host our application. So, let's install it by running in your terminal:
$ brew install heroku
Deploying on Heroku is a pretty straightforward procedure, but first we need to create a free account on their website.
Note: After you register at Heroku, don't forget your credentials since you will need them during the next steps.
At this point of time we have everything we need and are able to proceed with the deploy.
Step #0: Sign In
heroku login. This will prompt us with a login form, where we should enter our credentials.
$ heroku login Enter your Heroku credentials: Email: firstname.lastname@example.org Password: ********
If our credentials are correct we will see the following:
Logged in as email@example.com
Note: We need to tell Heroku which account to use for hosting this application.
Step #1: Add Remote
Now that we are signed in, first thing we need to do is run
heroku create <app_name> in the root of our application. This command will create a new git remote named
heroku and will also produce an URL by which you may access your application.
Creating app... done, ⬢ salty-hollows-82713 https://salty-hollows-82713.herokuapp.com/ | https://git.heroku.com/salty-hollows-82713.git
Note: For example, I ran heroku create politiciantracker and now the URL to my application is http://politiciantracker.herokuapp.com.
Step #2: Deploy App
Now we can finally deploy the application to heroku. So let's do it, by running this command from terminal:
$ git push heroku master
This will say Heroku to apply everything we've done locally and launch the application.
Note: This command may produce a really long and cryptic output in your console, but this should not scare you in the least.
Heroku will run
bundle install automatically on each and every push, however if you got any migrations, you will need to trigger them manually. This can be done by means of the
heroku runcommand. It allows you to run (almost) any arbitrary command on the server.
To apply migrations we will tell server
heroku run rake db:migrate, this, in turn will apply changes to our
schema.rband restart the application.
$ heroku run rake db:migrate
And... that is pretty much it.
Congrats! Today is the big day cause you have deployed your app online.
Making changes to already deployed app
Once you decide to make some changes to your app, as you already know, you will have to first track them, then stage them. Here are the three commands you should always keep in mind for such cases:
$ git add -A $ git commit -m "message" $ git push heroku master