本番環境のlogを確認してエラーを解決していく①

はじめに

作成中のRailsアプリケーション「Money-app」の一覧ページにアクセスしたときに、エラーが発生している。

本番環境はHeroku。

log

hiroki@shibatahiroshitakanoiMac money-app % heroku logs -a money-app-khiro
2024-08-14T05:14:53.827948+00:00 app[web.1]: I, [2024-08-14T05:14:53.827911 #2]  INFO -- : [864a52a0-1b01-44ad-ab01-d55755ec027c] Processing by HomeController#top as HTML
2024-08-14T05:14:53.830066+00:00 app[web.1]: I, [2024-08-14T05:14:53.830032 #2]  INFO -- : [864a52a0-1b01-44ad-ab01-d55755ec027c]   Rendered home/top.html.erb within layouts/application (Duration: 0.3ms | Allocations: 186)
2024-08-14T05:14:53.834330+00:00 app[web.1]: I, [2024-08-14T05:14:53.834298 #2]  INFO -- : [864a52a0-1b01-44ad-ab01-d55755ec027c]   Rendered layout layouts/application.html.erb (Duration: 4.6ms | Allocations: 3026)
2024-08-14T05:14:53.834516+00:00 app[web.1]: I, [2024-08-14T05:14:53.834481 #2]  INFO -- : [864a52a0-1b01-44ad-ab01-d55755ec027c] Completed 200 OK in 6ms (Views: 5.6ms | Allocations: 4360)
2024-08-14T05:14:53.836241+00:00 heroku[router]: at=info method=GET path="/" host=money-app-khiro-a414f54be759.herokuapp.com request_id=864a52a0-1b01-44ad-ab01-d55755ec027c fwd="203.140.190.6" dyno=web.1 connect=0ms service=14ms status=200 bytes=3848 protocol=https
2024-08-14T05:14:54.040442+00:00 heroku[router]: at=info method=GET path="/top-new.jpg" host=money-app-khiro-a414f54be759.herokuapp.com request_id=1f054708-ac52-4af8-9726-0e32450f414a fwd="203.140.190.6" dyno=web.1 connect=0ms service=1ms status=304 bytes=48 protocol=https
2024-08-14T05:14:54.230388+00:00 heroku[router]: at=info method=GET path="/favicon.ico" host=money-app-khiro-a414f54be759.herokuapp.com request_id=8e3c2c68-f0f1-461b-89be-7c5ebf0a2fa2 fwd="203.140.190.6" dyno=web.1 connect=0ms service=1ms status=304 bytes=48 protocol=https
2024-08-14T05:15:01.074586+00:00 app[web.1]: I, [2024-08-14T05:15:01.074528 #2]  INFO -- : [1c273cd1-4f7a-4fb4-a862-abd76a0e67a8] Started GET "/posts/index" for 203.140.190.6 at 2024-08-14 05:15:01 +0000
2024-08-14T05:15:01.075262+00:00 app[web.1]: I, [2024-08-14T05:15:01.075227 #2]  INFO -- : [1c273cd1-4f7a-4fb4-a862-abd76a0e67a8] Processing by PostsController#index as HTML
2024-08-14T05:15:01.080165+00:00 app[web.1]: I, [2024-08-14T05:15:01.080132 #2]  INFO -- : [1c273cd1-4f7a-4fb4-a862-abd76a0e67a8]   Rendered posts/index.html.erb within layouts/application (Duration: 3.5ms | Allocations: 2114)
2024-08-14T05:15:01.080192+00:00 app[web.1]: I, [2024-08-14T05:15:01.080176 #2]  INFO -- : [1c273cd1-4f7a-4fb4-a862-abd76a0e67a8]   Rendered layout layouts/application.html.erb (Duration: 3.5ms | Allocations: 2159)
2024-08-14T05:15:01.080313+00:00 app[web.1]: I, [2024-08-14T05:15:01.080297 #2]  INFO -- : [1c273cd1-4f7a-4fb4-a862-abd76a0e67a8] Completed 500 Internal Server Error in 5ms (ActiveRecord: 0.6ms | Allocations: 3041)
2024-08-14T05:15:01.080936+00:00 app[web.1]: F, [2024-08-14T05:15:01.080915 #2] FATAL -- : [1c273cd1-4f7a-4fb4-a862-abd76a0e67a8]
2024-08-14T05:15:01.080937+00:00 app[web.1]: [1c273cd1-4f7a-4fb4-a862-abd76a0e67a8] ActionView::Template::Error (SQLite3::SQLException: no such table: posts):
2024-08-14T05:15:01.080938+00:00 app[web.1]: [1c273cd1-4f7a-4fb4-a862-abd76a0e67a8]     1: <div class="main posts-index">
2024-08-14T05:15:01.080939+00:00 app[web.1]: [1c273cd1-4f7a-4fb4-a862-abd76a0e67a8]     2:   <div class="container">
2024-08-14T05:15:01.080939+00:00 app[web.1]: [1c273cd1-4f7a-4fb4-a862-abd76a0e67a8]     3:     <% @posts.each do |post| %>
2024-08-14T05:15:01.080939+00:00 app[web.1]: [1c273cd1-4f7a-4fb4-a862-abd76a0e67a8]     4:       <div class="posts-index-item">
2024-08-14T05:15:01.080939+00:00 app[web.1]: [1c273cd1-4f7a-4fb4-a862-abd76a0e67a8]     5:         <%= post.content %>
2024-08-14T05:15:01.080940+00:00 app[web.1]: [1c273cd1-4f7a-4fb4-a862-abd76a0e67a8]     6:       </div>

打ったコマンド

hiroki@shibatahiroshitakanoiMac money-app % heroku logs -a money-app-khiro

heroku logs -a 「Heroku環境にアップしたアプリ名」というコマンドを打った。

これで、アプリのログを出力できる。

トップページは問題なかった

2024-08-14T05:14:53.827948+00:00 app[web.1]: I, [2024-08-14T05:14:53.827911 #2]  INFO -- : [864a52a0-1b01-44ad-ab01-d55755ec027c] Processing by HomeController#top as HTML
2024-08-14T05:14:53.830066+00:00 app[web.1]: I, [2024-08-14T05:14:53.830032 #2]  INFO -- : [864a52a0-1b01-44ad-ab01-d55755ec027c]   Rendered home/top.html.erb within layouts/application (Duration: 0.3ms | Allocations: 186)
2024-08-14T05:14:53.834330+00:00 app[web.1]: I, [2024-08-14T05:14:53.834298 #2]  INFO -- : [864a52a0-1b01-44ad-ab01-d55755ec027c]   Rendered layout layouts/application.html.erb (Duration: 4.6ms | Allocations: 3026)
2024-08-14T05:14:53.834516+00:00 app[web.1]: I, [2024-08-14T05:14:53.834481 #2]  INFO -- : [864a52a0-1b01-44ad-ab01-d55755ec027c] Completed 200 OK in 6ms (Views: 5.6ms | Allocations: 4360)
2024-08-14T05:14:53.836241+00:00 heroku[router]: at=info method=GET path="/" host=money-app-khiro-a414f54be759.herokuapp.com request_id=864a52a0-1b01-44ad-ab01-d55755ec027c fwd="203.140.190.6" dyno=web.1 connect=0ms service=14ms status=200 bytes=3848 protocol=https
2024-08-14T05:14:54.040442+00:00 heroku[router]: at=info method=GET path="/top-new.jpg" host=money-app-khiro-a414f54be759.herokuapp.com request_id=1f054708-ac52-4af8-9726-0e32450f414a fwd="203.140.190.6" dyno=web.1 connect=0ms service=1ms status=304 bytes=48 protocol=https
2024-08-14T05:14:54.230388+00:00 heroku[router]: at=info method=GET path="/favicon.ico" host=money-app-khiro-a414f54be759.herokuapp.com request_id=8e3c2c68-f0f1-461b-89be-7c5ebf0a2fa2 fwd="203.140.190.6" dyno=web.1 connect=0ms service=1ms status=304 bytes=48 protocol=https
2024-08-14T05:15:01.074586+00:00 app[web.1]: I, [2024-08-14T05:15:01.074528 #2]  

上記のログでは、HomeControllerのtopアクションを処理して、home/top.html.erbとlayouts/application.html.erbをレンダリングしている。

そして、WEBサーバへの要求が成功したことを表す「200 OK」を返している。

200 OK – Google 検索

そのあとは、画像などを取得している。

エラー部分のログ

I, [2024-08-14T05:15:01.074528 #2]  INFO -- : [1c273cd1-4f7a-4fb4-a862-abd76a0e67a8] Started GET "/posts/index" for 203.140.190.6 at 2024-08-14 05:15:01 +0000
2024-08-14T05:15:01.075262+00:00 app[web.1]: I, [2024-08-14T05:15:01.075227 #2]  INFO -- : [1c273cd1-4f7a-4fb4-a862-abd76a0e67a8] Processing by PostsController#index as HTML
2024-08-14T05:15:01.080165+00:00 app[web.1]: I, [2024-08-14T05:15:01.080132 #2]  INFO -- : [1c273cd1-4f7a-4fb4-a862-abd76a0e67a8]   Rendered posts/index.html.erb within layouts/application (Duration: 3.5ms | Allocations: 2114)
2024-08-14T05:15:01.080192+00:00 app[web.1]: I, [2024-08-14T05:15:01.080176 #2]  INFO -- : [1c273cd1-4f7a-4fb4-a862-abd76a0e67a8]   Rendered layout layouts/application.html.erb (Duration: 3.5ms | Allocations: 2159)
2024-08-14T05:15:01.080313+00:00 app[web.1]: I, [2024-08-14T05:15:01.080297 #2]  INFO -- : [1c273cd1-4f7a-4fb4-a862-abd76a0e67a8] Completed 500 Internal Server Error in 5ms (ActiveRecord: 0.6ms | Allocations: 3041)
2024-08-14T05:15:01.080936+00:00 app[web.1]: F, [2024-08-14T05:15:01.080915 #2] FATAL -- : [1c273cd1-4f7a-4fb4-a862-abd76a0e67a8]
2024-08-14T05:15:01.080937+00:00 app[web.1]: [1c273cd1-4f7a-4fb4-a862-abd76a0e67a8] ActionView::Template::Error (SQLite3::SQLException: no such table: posts):
2024-08-14T05:15:01.080938+00:00 app[web.1]: [1c273cd1-4f7a-4fb4-a862-abd76a0e67a8]     1: <div class="main posts-index">
2024-08-14T05:15:01.080939+00:00 app[web.1]: [1c273cd1-4f7a-4fb4-a862-abd76a0e67a8]     2:   <div class="container">
2024-08-14T05:15:01.080939+00:00 app[web.1]: [1c273cd1-4f7a-4fb4-a862-abd76a0e67a8]     3:     <% @posts.each do |post| %>
2024-08-14T05:15:01.080939+00:00 app[web.1]: [1c273cd1-4f7a-4fb4-a862-abd76a0e67a8]     4:       <div class="posts-index-item">
2024-08-14T05:15:01.080939+00:00 app[web.1]: [1c273cd1-4f7a-4fb4-a862-abd76a0e67a8]     5:         <%= post.content %>
2024-08-14T05:15:01.080940+00:00 app[web.1]: [1c273cd1-4f7a-4fb4-a862-abd76a0e67a8]     6:       </div>

まずは、/posts/indexを取得して、PostsControllerのindexアクションを処理している。

次に、layouts/application.html.erbを取得している。

その後に、500エラーを出力している、

エラーメッセージは、ActionView::Template::Error (SQLite3::SQLException: no such table: posts)

エラーの原因の仮説

postsテーブルがないことが原因と考えられる。

エラーの解決方法の仮説

本番環境(Heroku環境)で、マイグレーションすればいいのではないだろうか?

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

投稿ID : 24035