0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【Rails】Herokuでアプリをデプロイする方法

Last updated at Posted at 2021-05-15

目的

Railsで作成したアプリをHerokuを使用しデプロイする。

開発環境

macOS: Big Sur
Rubyバージョン: 2.6.5
Railsバージョン: 6.0.0

前提

  • Herokuでのユーザー登録は完了している。

  • test-appという名のアプリがローカル環境にて実装されている。

手順

  1. Herokuの導入
  2. Herokuへのログイン
  3. Heroku上へのアプリ作成
  4. MySQLの設定
  5. Heroku上での環境変数の設定
  6. Stackの指定
  7. Herokuへアプリを追加
  8. マイグレーションの実行
  9. アプリの確認
  10. エラーが出る場合

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へ反映させるため、commitpushを忘れずに行いましょう。

続いて以下のコマンドで、Herokuにアプリケーションの情報を追加します!

% git push heroku master

これでデプロイできたかなと思います。

最後に

これでHerokuへのデプロイは完了です!
デプロイ後にアプリを変更した場合は、git push heroku masterheroku run rails db:migrateをしてHerokuへ反映させましょう!
では。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?