LoginSignup
4
3

More than 5 years have passed since last update.

herokuの本番環境のPostgreSQLはGUIで管理しよう

Last updated at Posted at 2019-01-13

開発環境では動くのに、本番環境で動かない

そういうこと、ビギナーエンジニアには経験があるはず。
そして得てして本番のデータベースが悪さしていることも多い。
そこを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クライアント。

んで本番のusersテーブルを見に行くと

スクリーンショット 2018-12-22 20.08.04.png

なるほど、開発途中で試しに入れた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を見に行くとわかるよ。
これで本番でもスレッド一覧画面に行けるようになったとさ。

4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3