いいね機能が本番環境で動作しない

 ポートフォリオ作りがひと段落したので、本番環境での動作を確認すると、いいね機能が動作しなかったので、原因と対処法を備忘録として残します。

 

症状

 いいね機能が本番環境で動作しない(開発環境での動作は確認済み)

 

 検証ツールで確認すると、エラーコード 500(Internal Server Error)

 

 今回は非同期(Ajax)で実装しましたが、、他の非同期の機能(インクリメンタルサーチ、フォロー、アンフォロー)は問題なく動いているので、JQueryJavaScriptには問題無さそうです。

 

 よくあるのが、マイグレーションを忘れてしまうことが挙げられます。しかし、再起動を行っても解消されません。

 

 そこで、エラーログを見ると原因が判明しました。

 

f:id:roroo:20210114194700p:plain

 怪しいのが、ActiveModel::MissingAttributeError (can't write unknown attribute `likes_count`): の表示です。どうやら「 ' ikes_count ' という不明な属性を書き込む事はできないよ」と怒られているようです。

 

 ikes_countは自分のモデルに記述したコードです。投稿に対していいねされた数をカウントするために記述しましたが、これが原因のようです。

f:id:roroo:20210114200156p:plain

 

 試しにコメントアウトし、再度デプロイすると機能が動作しました。

 

f:id:roroo:20210114200243p:plain


 モデルの記述が原因で本番環境だと動作しなくなる理由は現在よく分かりません。こちらも調べていきます。(恐らくコード修正の過程で、マイグレーションファイルを修正した際に、モデルのこの処理だけ消し忘れた気がします。)

 今回学んだことは最初にエラーログを調べることがエラー解決の近道だと感じました。原因がわからなければ対処のしようもありませんからね。

 備忘録用にエラーログの表示の仕方を記述します。

 

$ cd

$ cd.ssh/

ssh -i 鍵の名前.pem ec2-user@作成したEC2インスタンスと紐付けたElastic IP

$ cd /var/www/アプリケーション名

$ cd current

$ cd log

$  tail -f production.log