Other Pages

Expand All


step "Use git" do
  tip "If your prompt doesn't already show that you are (still) in the test_app folder" do
    console "cd test_app"

  console <<-BASH
    git init

  result "Initialized empty Git repository in c:/Sites/railsbridge/test_app/.git/"

  console "git add -A"
  tip do
    message <<-MARKDOWN
      With Git, there are usually many ways to do very similar things.

        * `git add foo.txt` adds a file named `foo.txt`
        * `git add .` ("git add dot") adds all new files and changed files, but *keeps* files that you've deleted
        * `git add -A` adds everything, including deletions

      "Adding deletions" may sound weird, but if you think of a version control system as keeping track of *changes*, it might make more sense.

  console "git commit -m \"initial commit\""
  result "a lot of lines like create mode 100644 Gemfile"

  console "git log"
  result "(Your git name and \"initial commit\" message.)"

step "Deploy your app to Heroku" do

  step "Create a Heroku application from this local Rails application." do

    message "The very first time you use `heroku` you must enter your Heroku email address and password. Your password may not be shown as you type it, but don't worry, it's being entered! If you have already provided your credentials before, you won't be prompted for them again."

    console "heroku create"
    result <<-OUTPUT
      Enter your Heroku credentials.
      Email: myemail@example.com
      Uploading ssh public key /Users/smei/.ssh/id_rsa.pub
      Creating floating-winter-18... done, stack is cedar
      http://floating-winter-18.heroku.com/ | git@heroku.com:floating-winter-18.git
      Git remote heroku added

    message "Heroku apps are automatically given lyrical names that look like '[adjective]-[noun]-[number]'.  Each name is different."

    console "git remote show"
    result "heroku"

    message "If you get messages here complaining about public keys it's probably due to some confusion with SSH key usage by another app on your computer.  Call a volunteer over to help you figure it out.  Luckily this only needs to be done the first time you create a Heroku app."

  step "Prepare your rails app for deploying to Heroku" do
    message <<-MARKDOWN
      Launch your text editor and open the "Gemfile" file located inside of your test_app folder. (On Windows, this should be in `C:\\Sites\\railsbridge\\test_app` and on Linux/OS X, it should be under `~/railsbridge/test_app`.)

      Inside this file, change the line:
    source_code :ruby, <<-RUBY
      gem 'sqlite3'

    message "To this:"

    source_code :ruby, <<-RUBY
      group :development, :test do
        gem 'sqlite3'

      group :production do
        gem 'pg', '~> 0.18'

    message "Save the file."

    tip do
      message 'When you saved the file, your text editor may have added colors to the code, much like the example above.  It recognizes the file contains Ruby, and will mark up different kinds of words with different colors. This is called "syntax highlighting", which makes it easier to read code.'
    tip "Why Sqlite (sqlite3) and PostgreSQL (pg)?" do
      message "SQLite and PostgreSQL are different kinds of databases.  We're using SQLite for our development and test environments because it's simple to install.  We're using PostgreSQL in our production environment because Heroku has done the hard work of installing it for us and it's more powerful than SQLite. We have separate test, development and production databases by default in Rails."

    console "gem install bundler"

    fuzzy_result <<-OUTPUT
      Successfully installed bundler-{FUZZY}1.14.3{/FUZZY}
      1 gem installed

    console "bundle install --without production"

    message "Again, wait for the console prompt, and look for the 'Bundle complete!' message just above."

  step "Set the root route" do
    message "Use your editor to open the file routes.rb  (`C:\\sites\\railsbridge\\test_app\\config\\routes.rb` or `~/railsbridge/test_app/config/routes.rb`) and find the line containing:"

    source_code :ruby, <<-RUBY
      Rails.application.routes.draw do

    message "After this line, add a new line with the following:"

    source_code :ruby, <<-RUBY
      root 'drinks#index'

    message "Save the file."

  step "Add the changes to git" do

    message "Before running the following command (to add to your local git repository), make sure that you are in the `test_app` directory."

    console 'git add .'
    console 'git commit -m "Updates for heroku deployment"'

  step "Deploy (push) to heroku" do

    console "git push heroku master"

    message "It may ask: \"The authenticity of host 'heroku.com (' can't be established. RSA key fingerprint is 8b:48:5e:67:0e:c9:16:47:32:f2:87:0c:1f:c8:60:ad. Are you sure you want to continue connecting (yes/no)?\" Type <code>yes</code> and hit *enter*."

    result <<-OUTPUT
      The authenticity of host 'heroku.com (' can't be established.
      RSA key fingerprint is 8b:48:5e:67:0e:c9:16:47:32:f2:87:0c:1f:c8:60:ad.
      Are you sure you want to continue connecting (yes/no)? yes
      Warning: Permanently added 'heroku.com,' (RSA) to the list of known hosts.
      Counting objects: 60, done.
      Compressing objects: 100% (54/54), done.
      Writing objects: 100% (60/60), 79.03 KiB, done.
      Total 60 (delta 10), reused 0 (delta 0)

      -----> Heroku receiving push
      -----> Rails app detected
             Compiled slug size is 080K
      -----> Launching...... done
             App deployed to Heroku

      To git@heroku.com:floating-winter-18.git
       * [new branch]      master -> master

    important "Be sure to find and learn your Heroku application name in the output."

    message "This process will probably take about twice as long as your 'bundle install' and then will return you to your console prompt.  If it takes longer than that, talk to a TA."

    console "heroku run rails db:migrate"

    result <<-OUTPUT
      Migrating to CreateDrinks (20160706063236)
      ==  20160706063236 CreateDrinks: migrating =====================================
      -- create_table(:drinks)
         -> 0.0084s
      ==  20160706063236 CreateDrinks: migrated (0.0085s) ============================

    message "The long number after CreateDrinks is a timestamp. Yours will be different!"

  step "Visit your new application" do

    message "Now that the app is deployed, you can visit it in a browser."

    tip "To quickly open your heroku application in a browser" do
      console "heroku open"

    message "The URL for your app is <code>*application-name*.heroku.com</code> -- something like <code>floating-winter-18.heroku.com</code>."

    message "Verify you see the welcome page. Leave this browser window open."

    message "Create and save a new drink to verify you can write to the database on Heroku."

    message "If you want to see a little more info about your app, you can run `heroku info`."

next_step "get_a_sticker"