はじめに
Railsなどを中心に勉強中のエンジニア初心者が他の記事を参考にしたり、実際に実装してみたりして、アウトプットの一環としてまとめたものです。
間違っていることもあると思われるので、その際は指摘いただけると幸いです。
RilasアプリケーションをHeroku環境で本番稼働する
下記の前提とする。
-
Heroku CLI
の実行環境があり、Heroku
上にリポジトリがある - AWS CLIの設定が完了している
Heroku上のリポジトリ情報を確認する
Heroku
上のリポジトリ情報を確認する
heroku info -a Heroku上のアプリケーション名
実行結果
% heroku info -a rails-app
=== rails-app
Auto Cert Mgmt: false
Collaborators: rails-app@gmail.com
Dynos:
Git URL: https://git.heroku.com/rails-app.git
Owner: final-task@herokumanager.com
Region: us
Repo Size: 0 B
Slug Size: 0 B
Stack: heroku-20
Web URL: https://rails-app.herokuapp.com/
Heroku上のリポジトリ情報を登録する
上記で確認したリポジトリ情報を登録する。
ローカルのアプリケーションフォルダ内で実行しないとfatal: not a git repository (or any of the parent directories): .git
というエラーが出るため注意。
Heroku
上のリポジトリ情報を登録する
git remote add heroku (Git URL)
実行結果
% git remote add heroku https://git.heroku.com/rails-app.git
% git remote -v
heroku https://git.heroku.com/rails-app.git (fetch)
heroku https://git.heroku.com/rails-app.git (push)
origin https://github.com/test/rails-app.git (fetch)
origin https://github.com/test/rails-app.git (push)
Heroku上へコードをデプロイ
Heroku上にコードをデプロイする。 デプロイしたいブランチ名をtestbranch
と仮定する。
実行コマンド
これはHerokuリポジトリ(https://git.heroku.com/rails-app.git)にプッシュするという意味。
git push heroku testbranch:master
実行結果
emote: -----> Discovering process types
remote: Procfile declares types -> (none)
remote: Default types for buildpack -> console, rake, web
remote:
remote: -----> Compressing...
remote: Done: 147.1M
remote: -----> Launching...
remote: Released v5
remote: **https://**rails-app**.herokuapp.com/** deployed to Heroku # アプリケーションのURL
remote:
remote: This app is using the Heroku-20 stack, however a newer stack is available.
remote: To upgrade to Heroku-22, see:
remote: https://devcenter.heroku.com/articles/upgrading-to-the-latest-stack
remote:
remote: Verifying deploy... done.
To https://git.heroku.com/rails-app.git
* [new branch] testbranch -> master
アプリケーションURL(https://rails-app.herokuapp.com/
)へアクセス
下記のようになる場合は、エラー。
エラー時のログの確認
下記コマンドなどでアプリケーションのログを確認して対応する。
(今回の場合は、MySQLの構築がされていないためエラーとなっている。ログはメモるの忘れた)
heroku logs --source=app --tail
Heroku上でMySQLの環境を構築する
データベースの接続情報を作成
JAWSDB_URL
はJawsDB
プラグインから提供される環境変数で、ユーザー名やパスワードを含めデータベースに接続するためのすべての情報が格納されている。
heroku addons:create jawsdb:kitefin
config/database.yml
の編集
前述のコマンドで作成したデータベースの接続情報を追記する。
production:
<<: *default
url: <%= ENV['JAWSDB_URL']&.sub('mysql://', 'mysql2://') %>
Heroku環境へデプロイする
上記の作業が完了したら、Heroku環境へデプロイする。
ただ、まだデータベースの設定が完了していないためエラーとなる。
データベースの設定
必要とするテーブルや初期データを生成する必要がある。
実行コマンド
heroku run bin/rails db:migrate
heroku run
は任意のコマンドをHeroku
上で実行するためのコマンド。
ここでは、bin/rails db:migrate
を実行している。
ここまで完了すれば、Heroku上でアプリケーションが稼働できるはず。。
参考