エラー内容
フリマアプリをHerokuにアップし、商品を出品しようとしたところ、エラー発生。
エラーが起こった環境設定の状況
- macOS Catalina バージョン10.15.7
- Rails Rails 6.0.3.4
- Herokuを使ってデプロイ
解決したコマンド(結論)
Herokuの大元を再起動したら直った!
f.〇〇@〇〇noMacBook-Air furima-29074 % heroku restart
エラーを特定して解決までの流れ(詳細)
特定のため、まずは確認!
#### (1)ローカル環境では、同じ出品作業ができるか?
#### (2)データベースが反映されているか?
結果:最新だった。
f.〇〇@〇〇noMacBook-Air furima-29074 % heroku run rails db:migrate:status
(省略)
up 20201121005023 Devise create users
up 20201123065101 Create items
up 20201123075851 Create active storage tablesactive storage
up 20201204112402 Create orders
up 20201204112701 Create payments
(省略)
#### (3)masterは最新?コミットされているか?
結果:最新だった。
f.〇〇@e〇〇noMacBook-Air furima-29074 % git push heroku master
Everything up-to-date
ログを確認しよう!
f.〇〇@〇〇noMacBook-Air furima-29074 % heroku logs
その中に、
undefined method ’prefecture_id'
Did you mean? prefecture
prefectureは定義されてないよ?ここおかしいのでは?とメッセージ。
####思い当たる節
(私の状況では)itemsテーブル
とpaymentsテーブル
において共通のActive Hash
を使用。
初めのデータベース設計時点では、共通で使用できることに気づいておらず、後から共通のカラム名に変更した経緯があった。(変更後のカラム名が、prefecture_id
)
この状況から仮説を立てよう!
仮説1:データベース(カラム名)が本番環境にうまく反映していないのでは?
データベースをリセット。
結果:もう一度ログを確認するも改善せず。
f.○○@○○noMacBook-Air furima-29074 % heroku run RAILS_ENV=production DISABLE_DATABASE_ENVIRONMENT_CHECK=1 bundle exec rake db:migrate:reset
仮説2:内容は合っているのに、エラーが出ることから、ただのバグ?
Herokuを再起動。(当初の、結論のコマンド)
結果:直った!!🎉
f.〇〇@〇〇noMacBook-Air furima-29074 % heroku restart
学びになったこと(理解が浅かったこと)
- パソコンと同じように、Herokuの大元自体を再起動することによって直ることがあることを知った。
-
log/development.log
や、log/test.log
はあくまで開発・テスト環境のログであって、本番環境のログはターミナルから確認することを理解した。 -
Sequel Pro
のようなUIで見るようにするにはSSH
を入れないと知った。ただ、基本はターミナルということで、もっとコマンドの引き出しを広げたい(必要に応じて使えるようになりたい)と思った。
以上です。
同じように困った人の解決になれば幸いです。
(間違いあった時は、教えてください!)