この投稿は別サイトからのクロス投稿です(クロス元:https://dolphin-rokujiro.com/wor...

デプロイに失敗していないか確認する


そもそも、デプロイに失敗していないか確かめましょう。
Herokuの管理画面で、ビルド・デプロイの履歴を確認することができます。

[管理画面]>[Activity]


 

何らかのエラーがあってビルドが失敗していれば、以下のように表示されるはずです。
そして、ログを見ることで具体的にどんなエラーが発生しているか確認することができます。


 

「rake assets:precompile」を実行する


デプロイ前のアセットのプリコンパイルをし忘れると、cssやjsの処理がうまく反映されません。
対処方法としては、以下の通りです。

  • 開発環境で、「$ rake assets:precompile」を実行してからデプロイし直す

  • Heroku上で「rake assets:precompile」を実行する

Heroku上でコマンドを実行する方法は、以下の通りです。
 

[管理画面]>右上の[more]を押下>[Run console]を選択


 

コンソールが立ち上がるので、コマンドを入力して実行する


 

少し時間がかかりますが、以下のように「Proccess exited」と表示されれば、処理完了です。


 

そもそも、assets:precompileというのが何なのかわからない。
「アセットパイプライン」という言葉を聞いてピンとこない。
という場合は、以下のリファレンスを参照することをオススメします。

「rails db:migrate」を実行する


開発環境と本番環境ではDBが異なるので、マイグレーションファイルに変更があれば、本番環境でもこのコマンドを実行する必要があります。
先ほどのアセットのプリコンパイルと同じように、Heroku上でコマンドを実行しましょう。

[管理画面]>右上の[more]を押下>[Run console]を選択


 

コンソールが立ち上がるので、コマンドを入力して実行する


 

開発環境と本番環境で動作が異なる場合


開発環境では問題なく動作しているのに、本番環境では上手くいかない。
ということが起きたときには、まずは以下のことを確認してみましょう。

configファイルを変更していないか


開発環境と本番環境では、基本的に設定が異なります。
それぞれの設定ファイルは以下の通りです。

/config/environments/production.rb #本番環境用の設定ファイル

/config/environments/development.rb #開発環境用の設定ファイル

これらの設定ファイルを変更したことによって、動作に予期せぬ差異が起こっている可能性があります。
Gitリポジトリの変更履歴を追うなどして、configファイルに変更を加えていないか確認してみましょう。
configファイルを変更するときは、それによってどんなことが起こるのかをしっかり把握していないと、原因不明のエラーにハマる可能性があるので、十分注意しましょう。

全く同じ状況で動かしているか


なぜ挙動に違いが出るのか、どれだけ調べてもわからないときは、本当にまったく同じ状況で動かしているのか確認してみましょう。
例えば、


  • URLはまったく同じか(同じ画面を見ているつもりが、よく似た違う画面だった。開発環境ではhttps接続をしていて、本番環境ではhttp接続になっていたなど)

  • 同じブラウザで見ているか

  • 同じデバイスで見ているか(開発環境はPC、本番環境はスマホという確認の仕方をしていないかなど)

サーバーを再起動してみる


ControllerやView、routes.rbなどを変更した場合、ページの再読み込みをするだけで変更が反映されます。
しかし、configファイルなどを変更した場合は、サーバーを再起動する必要があります。
どうしても原因がわからないときは、一度サーバーを再起動するのもアリかもしれません。

どのファイルを変更したときにサーバーの再起動が必要なのか、というのは以下の質問の回答の通りです。
Railsのファイルの変更の自動読み込みについて
「app以下のファイルとconfig/routes.rbの変更は再起動が不要、それ以外は再起動が必要」
ということになるようです。

まとめ


Railsアプリケーションを開発しはじめた頃は、何が原因でエラーが発生するのか、なぜHeroku上では上手く動作しないのかがわからないことがたくさんあると思います。
当たり前のことですが、ファイルに変更を加えるときは、それによって、何がどう変わるかをしっかり把握しておきましょう。
何が起こるか具体的にわかっていない変更はすべきではありません。
これは、プログラミングにおいても同様です。

そして、デプロイはこまめにしましょう。
大量の変更をまとめてデプロイしてしまうと、検証が正確に行えません。
もし不具合があっても、どの変更が影響を与えたのか把握が難しくなります。

ファイルを変更することで、どう変わるかを把握する。
本番環境にデプロイ後、想定通りにアプリケーションの挙動が変わっていることを確認する。
これらを習慣的に行うことで、原因不明のエラーに悩まされることはほとんど無くなるはずです。

関連記事

この記事へのコメント

まだコメントはありません
2
@rokujiroの技術ブログ
2
このエントリーをはてなブックマークに追加