【Heroku】 프로덕션 환경에서 "We're sorry, but something went wrong."오류

3185 단어 경 6Rails

오류 내용



프리마 앱을 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? prefectureprefecture는 정의되지 않았습니까? 여기 이상한거야? 그리고 메시지.

    떠오르는 절



    (내 상황에서는) 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
    

    배운 것 (이해가 얕은 것)


  • PC와 마찬가지로, Heroku의 대원 자체를 재기동함으로써 고칠 수 있다는 것을 알았다.
  • log/development.log 와, log/test.log 는 어디까지나 개발·테스트 환경의 로그로서, 프로덕션 환경의 로그는 터미널로부터 확인하는 것을 이해했다.
  • Sequel Pro 와 같은 UI로 보도록 하려면 SSH 를 넣지 않는다고 알았다. 다만, 기본은 터미널이라고 하는 것으로, 보다 커맨드의 서랍을 넓히고 싶다(필요에 따라서 사용할 수 있게 되고 싶다)라고 생각했다.

  • 이상입니다.
    똑같이 곤란한 사람의 해결이 되면 다행입니다.
    (잘못되었을 때는 말해주세요!)
     

    좋은 웹페이지 즐겨찾기