#はじめに
プログラミングを初めて4ヶ月目に突入した初学者です。
デプロイ時にエラーが発生しましたが、エラー内容を確認方法が分からず躓いたのでメモを残します。
Qiita初投稿の為、暖かい目で見て頂ければと思います。
#環境
開発
・Ruby '2.3.8'
・Rails '5.2.3'
・vagrant
デプロイ
・AWS
・nginx
・unicorn
#エラー
ローカル環境ではエラーが発生しなくても、デプロイ後エラーが出ることがあります。
デプロイ後にエラーがあると以下の画面が表示されます
これだけでは、エラーの原因は分かりません。
**We're sorry, but something went wrong.**をGoogleで検索しても様々な記事(原因)が出てくるのでエラー箇所を絞ることが出来ませんでした。
また、Google chromeの検証機能をしようして同様にエラー箇所を絞ることが出来ませんでした。
#エラーログを確認するには・・・
エラー箇所の絞るにはログをみる必要があります。
ログは以下の場所で確認することが出来ます。
・デプロイ後のログ確認
”アプリケーション名/log/production.log”
・開発中でのログ確認
”アプリケーション名/log/development.log”
#エラーログの確認方法
「ターミナル」
1. EC2にssh接続する
2. $ cd /var/www/html/アプリケーション名
でに移動する。
3. $ cat log/production.log
を実行する。
4. 実行すると今までのログが表示されます。
今回のエラー箇所は下から8、9行目になります。
ActionView::Template::Error (Mysql2::Error: FUNCTION portfolio.RANDAM does not exist: SELECT users .* FROM users ORDER BY RANDAM()):
#エラー箇所の修正
ランダム表示を今回実装したのですが、記述が正しくなかったのでエラーが発生したようです。
・修正前
@users = User.order("RANDAM()").all
・修正前
@users = User.order("RAND()").all
mysqlではRANDしか使用出来ないみたいです。
※今回はEC2環境で変更しています。sudo vi app/controllers/エラー箇所のコントローラ名
#デプロイ環境に変更を適応させる
今回はunicornを使用しているのでsudo service unicorn restart
を実行します。
これでエラーは解消され、正しく表示されました。