Edited at

HerokuにRailsアプリをデプロイする手順


もくじ


  • 準備:Herokuログイン

  • 準備:Gemfile修正

  • 準備:git commit

  • Herokuアプリ作成

  • リモートリポジトリの登録

  • デプロイ

  • アクセス確認


準備:Herokuログイン

CLIでHerokuにログインしておく

$ heroku login


準備:Gemfile修正


  • production(Heroku)でsqlite3を利用しないように修正しておく

  • production(Heroku)でpgを利用するように修正しておく


Gemfile

# Use sqlite3 as the database for Active Record

gem 'sqlite3', group: [:development, :test]
gem 'pg', group: :production


準備:git commit

ソースをコミットしておく

# アプリのディレクトリに移動する

$ cd rails-app

# 初期化
$ git init

# ディレクトリ配下のファイルをコミット対象にする
$ git add *

# コミット
$ git commit -m "Release to heroku"


Herokuアプリ作成

Herokuアプリを作成して、URLとGitリポジトリを取得する



  • <アプリ名>は省略可能。省略するとアプリ名が自動で払い出される

  • 払い出されたURLがHerokuアプリのURL、Gitリポジトリとなる

# アプリのディレクトリに移動する

$ cd rails-app

# Herokuアプリを作成する
$ heroku create <アプリ名>

Creating app... done, ⬢ xxxxx-xxxxx-xxxxx
https://xxxxx-xxxxx-xxxxx.herokuapp.com/ | https://git.heroku.com/xxxxx-xxxxx-xxxxx.git


リモートリポジトリの確認・登録

リモートリポジトリherokuが作成されてることを確認する

# リモートリポジトリを確認

$ git remote
heroku

リモートリポジトリherokuが存在しない場合は、heroku create <アプリ名>コマンド実行時に払い出されたgitリポジトリをリモートリポジトリherokuとして登録する

# リモートリポジトリを追加

$ git remote add heroku https://git.heroku.com/xxxxx-xxxxx-xxxxx.git


補足:ローカルリポジトリ作成(git init)後にheroku createコマンドを実行した場合はリモートリポジトリherokuが自動で追加されますが、 heroku createコマンド実行後にローカルリポジトリを作成(git init)した場合は、手動でリモートリポジトリherokuを追加する必要があります。



デプロイ

ローカルのmasterブランチをリモートリポジトリherokuへpushする

$ git push heroku master


...
To https://git.heroku.com/mighty-beyond-37933.git
* [new branch] master -> master


アクセス確認

heroku openコマンドを実行すると自動でブラウザが開き、HerokuアプリのURLにアクセスする

$ heroku open

または、HerokuアプリのURLにブラウザでアクセスする

https://xxxxx-xxxxx-xxxxx.herokuapp.com/


補足:Heroku Postgres

Heroku上のRailsアプリでDB(Heroku Postgres)を利用したい場合はこちらの記事をご参考ください。

参考:Heroku PostgresをRailsアプリで利用する手順 - Qiita


補足:Heroku Redis

Heroku上のRailsアプリでsessionをRedisに保存したい場合はこちらの記事をご参考ください

参考:Rails の session store に Heroku Redis を利用する - Qiita


補足:herokuコマンド

環境変数

# 環境変数一覧

$ heroku config

# 環境変数名を指定して参照
$ heroku config:get ENV_NAME

# 環境変数を追加
$ heroku config:set ENV_NAME="value"

# 環境変数を削除
$ heroku config:unset ENV_VAR_NAME