目的
Railsで作成したアプリをHerokuを使用しデプロイする。
開発環境
macOS: Big Sur
Rubyバージョン: 2.6.5
Railsバージョン: 6.0.0
前提
-
Herokuでのユーザー登録は完了している。
-
test-app
という名のアプリがローカル環境にて実装されている。
手順
- Herokuの導入
- Herokuへのログイン
- Heroku上へのアプリ作成
- MySQLの設定
- Heroku上での環境変数の設定
- Stackの指定
- Herokuへアプリを追加
- マイグレーションの実行
- アプリの確認
- エラーが出る場合
Herokuの導入
まずターミナルからHerokuへアクセスするために、HerokuのCLIをインストールします!
% brew tap heroku/brew && brew install heroku
インストール終了後、下記コマンドにてバージョンを確認しましょう。
% heroku --version
バージョンが出力されればインストール完了です!
Herokuへのログイン
次にターミナルからHerokuへログインしてみます!
下記コマンド入力後、メールアドレス・パスワードを入力しログインしてください。
% heroku login --interactive
登録したメールアドレスにてログインできれば成功です!
Heroku上へのアプリ作成
デプロイの準備が整ったので、これからデプロイしていきます!
まずはHeroku上にアプリを作成します。
ここでHeroku上でのアプリ名を決める必要があります。(既に登録されているアプリ名は使えないので注意!)
アプリ名が決まったら、下記コマンドを実行しましょう!
% heroku create test-app
その後、下記コマンドにて設定が正しいか確認します。
% git config --list | grep heroku
fatal: not in a git directory
が出ていなければ次へ進みます!
MySQLの設定
HerokuはデフォルトでPostgreSQL
というデータベースになっていますが、今回はMySQL
を使用するため設定を変更します。
まず、HerokuでMySQLを使用するためにClearDBアドオン
を追加します!
% heroku addons:add cleardb
これでデータベースをMySQLに設定できましたが、
今回はRailsのGemでmysql2
を使用しているため、それに対応するよう設定を変更する必要があります。
下記コマンドを実行してください!
% heroku_cleardb=`heroku config:get CLEARDB_DATABASE_URL`
ClearDBデータベースのURLを変数heroku_cleardb
に格納できました。
続いて、下記のコマンドを入力してください。
% heroku config:set DATABASE_URL=mysql2${heroku_cleardb:5}
これでデータベースのURLを再設定できました!
DATABASE_URLの冒頭がmysql2://
に変更されていると思います!
Heroku上での環境変数の設定
Heroku上へデプロイする際、Gitで管理されているコードがデプロイされますが、master.key
はデフォルトでGitに管理されない仕組みとなっており、このままではcredentials.yml.enc
がHeroku上で扱えません。
そこでHeroku上に環境変数としてmaster.key
の値を設置します。
環境変数の追加はheroku config:set 環境変数名="値"
で設定できます。
下記コマンドを実行してください。
% heroku config:set RAILS_MASTER_KEY=`cat config/master.key`
続いて下記コマンドにて、環境変数一覧を表示し、設定が正しくできているか確認しましょう。
% heroku config
RAILS_MASTER_KEY
という変数名で値が設定されていれば成功です。
Stackの指定
Herokuではアプリの動作環境としてStackが用意されていますが、今回使用するRubyのバージョンではHeroku-18
までしかサポートされていないため、下記コマンドにてStackを指定します。
% heroku stack:set heroku-18 -a test-app
Herokuへアプリを追加
ついにアプリの追加です!
Gitで管理しているリポジトリをHerokuへ反映することで、Heroku上でアプリの操作が可能になります。
下記コマンドを実行してください。
% git push heroku master
この際に「remote: ! Could not detect rake tasks」
、「remote: ! ensure you can run $ bundle exec rake -P against your app」
とエラーが表示される場合は、こちらをご確認ください。
マイグレーションの実行
これまでの実装でHerokuにアプリの情報を反映することができました。
しかし、データベースにはマイグレーションの情報が反映されていないため、マイグレーションを実行しましょう!
% heroku run rails db:migrate
アプリの確認
ここまでくれば、アプリは正常に動作しているはずです。
Herokuにデプロイされたアプリを確認してみましょう!
まず下記コマンドを実行し、アプリの詳細を確認します。
% heroku apps:info
そしてWeb URL:
の部分に記載されているURLにアクセスすればアプリを確認できるはずです!
エラーが出る場合
Herokuヘアプリを追加する際に「remote: ! Could not detect rake tasks」
、「remote: ! ensure you can run $ bundle exec rake -P against your app」
とエラーが表示される場合は下記手順でbundlerのバージョンを変更してみましょう!
まず現在入っているbundlerを削除します。
% gem uninstall bundler
この際に何度か確認を求められますが、「y」を入力してエンターを押しましょう!
次にbundlerのバージョン2.1.4
を指定してインストールします!
% gem install bundler -v '2.1.4'
その後Gemfile.lock
を削除します。
テキストエディタで作成済みのアプリを開き、「Gemfile.lock」を削除しましょう!
削除できたらGemfile.lock
を作り直します!
以下のコマンドを実行してください。
% bundle install
変更をGitHubへ反映させるため、commit
とpush
を忘れずに行いましょう。
続いて以下のコマンドで、Herokuにアプリケーションの情報を追加します!
% git push heroku master
これでデプロイできたかなと思います。
最後に
これでHerokuへのデプロイは完了です!
デプロイ後にアプリを変更した場合は、git push heroku master
とheroku run rails db:migrate
をしてHerokuへ反映させましょう!
では。