2024.08.15(更新日: 2024.08.15)
本番環境の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」を返している。
そのあとは、画像などを取得している。
エラー部分のログ
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
コメントを残す