【プログラミング】Ruby on Railsでherokuにデプロイできない時の設定方法

Ruby on Railsチュートリアルと格闘していると、さも当たり前のように登場する「heroku経由でローカル環境をデプロイしてみよう」という文言。

 

初心者目線だと、herokuとは何か、ローカル環境をデプロイするための設定とは何かといった基本的なことから理解しないといけないのに、重要な説明の工程を端折られているので余計に分かり辛いことこの上ない。

色々と設定をいじってようやくheroku経由でローカル環境をデプロイするための設定が完了したので記録として残しておきます。

僕の開発環境での解決方法は以下のとおりです。

【前提条件】

Homebrew導入済み

rbenv導入済み(rvmと競合したためrbenvに統一)

ruby 2.7.0(rbenvにより設定)

ruby on rails 6.0.2.1(rbenvにより設定)

rbenvとrvmの競合と削除方法に関する記事は下のリンクから確認ください。

【プログラミング】rvmとrbenvがうまく共存できない上に邪魔し合っていたのでrvmを削除した

Rails6でrails sが動作しない場合の対処法は下のリンクから確認ください。

【プログラミング】Ruby on Rails6.0.2.1で「rails s」が起動しないので解決法を記録しておく

 

Rails newでアプリケーションを作成

http://localhost:3000/blogsをURLに入力して実行。

サンプルで作成したアプリケーションが開いたら問題無し。

 

続いて、config/routes.rbに以下のコードを記述して保存。

root ‘blogs#index’を記述しておかないと、本番環境(herokuへデプロイした際)で「URLが正しくありません」と表示されるため注意。

「Homebrew経由でHeroku導入」と「Homebrew経由でpostgresql」が既に完了している場合は、2つの工程をスキップして構いません。

「sqlite3→postgresqlへの変更時の留意」内の処理を行ったら、bundle installを実行しましょう。

 

 

Homebrew経由でHeroku導入

まずはHomebrew経由でHerokuを導入します。

ターミナルで以下のコードを記述して実行。

少し待つと、自動的にHeroku環境がbrewに導入されます。

 

<留意事項>

事前にRailsチュートリアルに従って、”heroku create”を実行している場合、heroku上にアプリケーションが自動生成されているケースがあります。

Herokuの無料版では1ユーザーあたりの所有アプリケーション上限は5個までですので、それを超えている場合には、以下のURLより削除します。

【Heroku管理画面】https://dashboard.heroku.com/apps

削除する場合は、不要なアプリ名を選択→settings→画面下のdelete→ポップアップ内で不要なアプリ名をコピペしてdelete実行。

 

Homebrew経由でpostgresql導入

この工程に関する説明がRailsチュートリアルでは抜けています。pgエラーが頻発する場合は、この作業が抜けているケースが当てはまる可能性が高いので、しっかりとpostgresql導入を行いましょう。

 

ターミナルで以下のコードを実行

※完了したら無事にgem pg 1.2.2がインストールされる(時期によりバージョン名は異なる場合があります)

※Homebrewでバージョン管理しているため、postgresqlのgemはここでインストールする必要がある。

 

sqlite3→postgresqlへの変更時の留意

 

作成したrailsアプリケーション内のGemfileに以下のコードを記述

Gemfile内のコード記述変更が完了したら、変更内容を反映させるためにbundle installを実行します。

ここまでできたらあと少しです。

 

config/databese.yml内の書き換え

 

これまでの作業が完了したら、作成したアプリフォルダ内にあるconfig/databese.ymlの中で以下のコードを記述します。

忘れずに上書き保存しておきましょう。

なお、=begin,=endはruby用のコメントアウト記法のため、.ymlでは正常に動作しませんでした(誤った記述を残すとエラーの元になるので注意)。

 

本番環境での動的な画像の表示をONにする設定

Railsでは本番環境での動的な画像の表示をデフォルトでOFFにする設定となっています。

これを際にONにするため、config/enviroments/production.rbを開いて以下の記述を修正します。

 

gitで管理するコードを記述して実行する

Herokuへデプロイする前に、gitで管理するコードを記述して実行しておきます。

git initは「このアプリケーションでgitを使用します」という宣言なので、実行は1アプリで1回だけで十分です。一方で、git add -Aとgit commit -mはアプリ内のファイルを変更した際には必ず実行する必要があります。

 

Herokuにデプロイしてみる

ここまでの一連の作業が完了したら、実際にheroku(本番環境)にrails newで作成したアプリケーションをデプロイしてみましょうあ。

【留意事項】

アプリケーションごとにheroku create [アプリ名]を行わないといけない(既に他のアプリと連動している[アプリ名]を指定したらエラーとなった)。

 

heroku create [アプリ名]による新規アプリの作成(heroku環境へのデプロイ準備)ができたら下のコードを記述して実行します。

確認のため、heroku openでデプロイが完了しているか確認します。

実はこれだけだとまだ完成していません。

下のコードを記述して実行することで、heroku(本番環境)でのマイグレーションが完了するため、こちらの処理を忘れずに行いましょう。

今回はhttps://[アプリ名].herokuapp.comで正常に開発環境と同じ画面表示が確認できました。

 

Railsチュートリアルは無料で内容ぎっちりの素晴らしい教本なのですが、細かい部分の説明や初心者が陥りがちなエラーへの対処などへの説明が抜け落ちているのが辛いところですね。

 

この記事で書いた手順を一つずつ実行していくことで、開発環境で作成したRailsアプリケーションをローカルの開発環境とHeroku上の本番環境で表示することが可能になりますので、学習がストップしている方は一度試してみてください。

この記事も人気ですよ