RailsアプリをHerokuへデプロイ

どうもこんばんは

ポートフォリオ作成の一環で、自作アプリをHerokuにデプロイしました。
その時の手順の覚書です。

環境

・macOS Mojave
・Ruby 2.5.3
・Rails 6.0.0
・Heroku 7.33.3 darwin-x64 node-v11.14.0

前提

macで個人開発をしていて、完成が見えてきたのでHerokuへデプロイしようと思いました。
DBがMySQLでしたので、Herokuで使用するPostgresに変更する必要がありました。

Herokuのアカウント登録

いくつかの登録方法があるようですが、私はWebから登録しました。
https://signup.heroku.com/login
特に難しいこともなかったので詳しい説明はしません。

macでコマンドが使えるようにします。
まずは公式のものを参考にしてください。
https://devcenter.heroku.com/articles/heroku-cli#download-and-install

ダウンロードとインストール
$ brew tap heroku/brew && brew install heroku

確認
$ heroku --version
heroku/7.33.3 darwin-x64 node-v11.14.0

Herokuリモートの作成

作成したアカウントでログインする
$ heroku login
heroku: Press any key to open up the browser to login or q to exit: 
Opening browser to https://cli-auth.heroku.com/auth/browser/xxxxxxxxxxx
Logging in... done
Logged in as xxxxxxxxx@gmail.com

空のgitリポジトリと空のアプリケーションを作成
$ heroku create
Creating app... done, ⬢ <アプリ名>
https://<アプリ名>.herokuapp.com/ | https://git.heroku.com/<アプリ名>.git

アプリ名は自動で設定してくれます。
オリジナルの名前にするなら以下のコマンドで変更。
大文字や既に使用されている名前は使用不可でエラーとなります。

$ heroku rename <アプリ名>

Gemfile,database.ymlの編集

Herokuで使用するDBがPostgresのため、設定ファイルの編集をします。

[Gemfile]対象部分のみ
#gem 'mysql2', '>= 0.4.4'
gem 'pg', '~> 0.18.4', group: :production

mysql2をコメントアウトして、pgを本番環境のみ追加します。
mysql2は開発環境に設定してもいいと思います。(最終的にそうした)

[database.yml]対象部分のみ

production:
 <<: *default
 adapter: postgresql
 encoding: unicode
 pool: 5
 database: XxxxxApp_production
 url: <%= ENV['DATABASE_URL'] %>

私はこのような書き方をしました。

デプロイしましょ

$ cd <アプリのあるディレクトリ>
$ git add .
$ git commit -m “<コメント>”

ブランチを切っていたので以下のコマンドにしました。適切な方法を教えて欲しい。
$ git push heroku <ブランチ名>:master —force

一度見てみる→railsのエラー画面
$ heroku open

マイグレーションする
$ heroku run rails db:migrate

再度"heroku open"するかURLを指定してアプリの動作確認。

エラー対処

マイグレーションでエラーが出ていたので対処しました。
最終的にはブランチを切っていたためにgit pushに不具合があったことがわかりました。
gitコマンドを使いこなすことと、切り分けをスムーズにできるようにしたいものです。

Postgresのアドオンを追加
$ heroku addons:create heroku-postgresql:hobby-dev

環境変数を確認
$ heroku config

"heroku run cat Gemfile"でリモートリポジトリのGemfileに不具合があることがわかりました。
heroku run 〜〜でコマンド操作できます。便利。

この記事が気に入ったらサポートをしてみませんか?