【Rails】HerokuでApplication errorが出たときの対処法




 

Railsアプリで

2020-05-08T08:56:34.186328+00:00 app[web.1]: F, [2020-05-08T08:56:34.186259 #4] FATAL — : [c8e35f62-55ce-47e6-91e9-d65c88df4948] 2020-05-08T08:56:34.186437+00:00 app[web.1]: F, [2020-05-08T08:56:34.186375 #4] FATAL — : [c8e35f62-55ce-47e6-91e9-d65c88df4948] NoMethodError (undefined method password_digest=’ for #<User:0x0000563bc9b410d0>

2020-05-08T08:56:34.186438+00:00 app[web.1]: Did you mean? password=):

2020-05-08T08:56:34.186492+00:00 app[web.1]: F,
[2020-05-08T08:56:34.186434 #4] FATAL — :
[c8e35f62-55ce-47e6-91e9-d65c88df4948] 2020-05-08T08:56:34.186550+00:00 app[web.1]: F,
[2020-05-08T08:56:34.186490 #4] FATAL — :
[c8e35f62-55ce-47e6-91e9-d65c88df4948] app/controllers/users_controller.rb:50:in create’

というエラーを解決するために色々いじくり、再びデプライしてみました。

すると、今度はもっとやばそうな

Application error
An error occurred in the application and your page could not be served. If you are the application owner, check your logs for details. You can do this from the Heroku CLI with the command
heroku logs –tail

というエラーが発生!!

つまるところ、

エラーがさらに悪化してしまったんですね。

ガラスのハートの持ち主であるぼくは心が折れる寸前になりましたが、なんとかめげずに戦う事にしました。

 

前回学んだ「Herokuのエラーをログで表示する方法」の

というコマンドを試してみましたが、

at=error code=H10

というヒントしか得られず、よくエラーの原因が分からなかったのです。

 

そこでこの手がかかりでググってみたところ、こちらの神記事を発見。

どうやら、

を発動すると、Heroku上でRailsコンソールを開けるようです。

 

やってみたところ、次のようなヒントが得られました。

/app/app/controllers/thanks_controller.rb:35:in <top (required)>': undefined local variable or method s’ for main:Object (NameError)

どうやら、thanks_controller.rbで定義されていない「s」という変数がある、と。

恐る恐るthanks_controller.rbを調べてみると、

うわっ、本当にsがありました。

なぜかファイルの最後に「s」がついてるではありませんか。

あまりにもエラーの解決のしなさにイラッとして、上書き保存コマンドcommand + Sを強打しすぎて、sが残ってしまったんでしょうね。

 

いやあ、でも助かりました。

これで振り出しに戻りましたが、何とか致命的なApplication Errorというニッチもサッチもいかない状況からは脱せました。

 

今回の経験を通して、Railsアプリ開発はデプロイしてから本番なんだと改めて痛感。

ローカル環境では生じていなかった問題が数々噴出してきていいます。

デプロイしたらゴールかと思っていたのですが、まだまだ先行きは長そうです。

なんとかアプリ完成まで持っていきたいです。

 

それでは!

Lin

Pocket
LINEで送る




音生入力で楽にブログを書く技が満載!
ブログ音声入力術

音声入力の使い方から文章を書くコツまで完全網羅。ブログを書きたいすべての人向けの電子書籍




コメントを残す

メールアドレスが公開されることはありません。