ここにはプログラミングの話を書くつもりはなかったけど
他に書く場所もないので書く。
ググっても珍しく他の記事があまり参考にならなかったので。
というか自分の環境が特殊で、複合原因だった。
状況
環境
Heroku + puma + sinatra + ActiveRecord + mysql のウェブアプリ。
発生したエラー
画面遷移時(厳密にはDBにデータをinsertするタイミング)に
"An unhandled lowlevel error occurred. The application logs may have details."
原因
複合原因でややこしいが、
- database.ymlではutf8mb4を指定していたのに実際のテーブルがutf8でレコードに依ってはinsertできない
- そのときに発生していたエラーメッセージをslackAPIで運用ログとして飛ばしていたが、slackAPIで使用できない文字が含まれていた?(あいまい)
- 結果としてslack-ruby-clientでクラッシュ
- 表題のエラーが画面に出力された
対応
本番DBをutf8mb4に変更した。解決。
(普段使ってるクライアントのSequel Proで全テーブルポチポチでdone)
どうするべきだったか
ググる前にpumaのエラーログを確認するべきだった。コンソールで
heroku logs -t -a appname
で確認ができる。
このエラーメッセージは基本的にググってもRails関連の記事しか出てこない。
個人開発なので(言い訳にならないが)適当こきすぎて却って遠回りしてしまった。
反省。。。