HerokuにRailsアプリを公開する方法の備忘録です。

今回公開するのは、Rails 5で作成したアプリアプリです。
公式ドキュメントのGetting Started with Rails 5.x on Herokuを参考に操作していきます。

# Railsバージョン確認
$ rails -v
Rails 5.1.2

Herokuを使う準備

Herokuサイトで、アカウント登録、heroku-cliのインストールを済ませておきます。
今回インストールしたバージョンは以下です。

# heroku-cliバージョン確認
$ heroku --version
heroku-cli/6.14.20 (darwin-x64) node-v8.4.0

Herokuアプリの作成

コマンドラインからも操作できるけど、今回はWeb画面から操作しました。

まずは右上のNew > Create new app をクリック。

Referenced from Heroku.
Referenced from Heroku.

App name を入力して、Create app をクリック。
ここで入力した文字列が、公開するHerokuアプリのURLの一部になります。

Referenced from Heroku.
Referenced from Heroku.

Herokuアプリができました。

Referenced from Heroku.
Referenced from Heroku.

Heroku Postgresの準備

Herokuの標準DBである、Heroku Postgresを準備します。 Herokuでは、RDBはHeroku Postgres、KVSは Heroku Redisを使うのが一般的です。

まずはResoucesタブのAdd-onsでHeroku Postgresを追加。

Referenced from Heroku.
Referenced from Heroku.

追加時にプランを選ぶモーダルダイアログが出るので、無料で行きたいならFreeプランを選びます。

Referenced from Heroku.
Referenced from Heroku.

database.ymlの設定

準備したHeroku Postgresのホスト名、データベース名、パスワードなどをRailsアプリのdatabase.ymlに反映させます。

作成したHeroku Postgresをクリック。

Referenced from Heroku.
Referenced from Heroku.

Settingsタブをクリック後、Database CredentialsのView Credentials…をクリック。

Referenced from Heroku.
Referenced from Heroku.

ホスト名、データベース名、パスワードなどが表示されるので、database.ymlのproductionに反映させます。

Referenced from Heroku.
Referenced from Heroku.
production:
  <<: *default
  encoding: utf8  
  adapter: postgresql
  port: xxxx
  username: xxxx
  host: xxxx.xxxx.xxxx.com
  database: xxxx
  password: xxxx

Gemfileの設定

Gemfileは、Railsのデフォルト設定でgem 'sqlite3'となっている部分をgem 'pg'に書き換えておきます。

# gem 'sqlite3'
gem 'pg'

デプロイ

Deployタブにデプロイ方法が書いてあるので、好きな方法でアップします。
今回は、Heroku Gitで行いました。

Referenced from wikipedia.
Referenced from wikipedia.
# 既にGitリポジトリがある場合
# リモートリポジトリとしてherokuを登録
$ heroku git:remote -a zzzmisa-rails
# リモートリポジトリherokuにpush
$ git push heroku master

デプロイが成功したら、Web画面左上のOpen appをクリックすると、公開したアプリにアクセスできます。

Referenced from wikipedia.
Referenced from wikipedia.

(おまけ)開発環境へのPostgreSQLインストール

ドキュメントによると…

We highly recommend using PostgreSQL during development.

開発環境でもPostgreSQLを使うことを強くおすすめします、とのことなので、ローカルにもPostgresをインストールしておくと良さそうです。

Postresのローカルへのインストール方法はLocal setupに書いてあります。

インストールができたら、database.ymlのdevelopmentのadapterをpostgresqlに変えて、DBをマイグレートし直せはOKです。