開発環境では動くのに、本番環境で動かない
そういうこと、ビギナーエンジニアには経験があるはず。
そして得てして本番のデータベースが悪さしていることも多い。
そこをGUIで簡単に管理しちゃおうよというお話。
以下は僕のエラー対応の棚卸しになります。
1.本番環境でスレッド一覧を見ようとして、エラー
ポートフォリオ作成して途中段階でのこと。
なぜか本番環境でスレッド一覧画面が表示できない。
heroku logs —tail して、ログ漁ってみると
2018-12-22T10:33:58.330119+00:00 app[web.1]: F, [2018-12-22T10:33:58.330053 #4] FATAL -- : [e366020e-2b0e-4f48-bbc5-ef0c233c0319]
2018-12-22T10:33:58.330182+00:00 app[web.1]: F, [2018-12-22T10:33:58.330119 #4] FATAL -- : [e366020e-2b0e-4f48-bbc5-ef0c233c0319]
ActionView::Template::Error (undefined method `downcase' for nil:NilClass):
なるほど、以下のgravater_forのヘルパーメソッドで
nilのemailに対してdowncaseしようとして怒られているわけか、、、
でもvalidateしているからnilなんて入らないはずなのになぁ。
module UsersHelper
def gravatar_for(user)
gravatar_id = Digest::MD5::hexdigest(user.email.downcase)
gravatar_url = "https://secure.gravatar.com/avatar/#{gravatar_id}"
image_tag(gravatar_url, alt: user.name, class: "gravatar")
end
end
2.Posticoを入れて本番データベースを見てみる
本番データを調査する必要が出てきましたので、思い切って
掲題の通りPostgreSQLのGUIツール導入することに
手順は以下の記事ご参考。
PostgreSQLのデータをGUIでいじる(macOS/Postico)
[Heroku Postgresで使うGUIクライアント。]
(https://qiita.com/niiyz/items/69e15b6d03c0023e6452)
んで本番のusersテーブルを見に行くと

なるほど、開発途中で試しに入れたuserデータがメールの情報持っていなくて
そこを参照してnilだよと怒られていたわけか。
原因究明完了。
3.本番データベースのリセット
# herokuのデータベースリセットは -aでherokuでのアプリ名を指定しないといけないから注意
$ heroku pg:reset DATABASE_URL -a YOUR_APP_NAME
$ heroku run rails db:migrate
$ heroku run rails db:seed
herokuのデータベースURLとか設定が見たいんであればターミナルで
$ heroku config -a YOUR_APP_NAME
実行か、herokuにログインしてsettingを見に行くとわかるよ。
これで本番でもスレッド一覧画面に行けるようになったとさ。