環境変数をHerokuに設定した話

はじめに

前回の記事でAPIの変更を行なったRailsアプリがHerokuではerrorを出していたので、それについて問題解決をしてRailsアプリを動く状態にした。

daily-weather-app.herokuapp.com

status=500 errorについて

ローカルではしっかり動いたrailsアプリがHerokuにあげて動作させるとエラーを出したのでサーバーログを見ることに。

$heroku logs --tail

サーバーのログをみながらアプリの方を動かしていたら検索ボタンを押してAPIリクエストをするタイミングでステータス500エラーが出ていることに気づいた。 ここから考えられるエラーの理由は私の中では以下の3パターンです。

  1. データベースのデータが間違っている
  2. データベースのデータとRailsアプリが繋がっていない
  3. ENVを用いた環境変数がHeroku側でうまく適応できていない (ここに気づかなくてかなり詰んだ)

データベース関連の問題について

データベース関連の問題については私の場合、アプリ側でデータを追加する操作をしていないためサーバー側に重要なデータがないので、全てリセットして再構築することにしました。

heroku上のDBをリセットする

ENVを用いた環境変数がHeroku側でうまく適応できていない

データベース関連については片づいたはずなのにうまく起動しなかったため更にステータス500のみのエラーログについて考えることにしました。

ステータス500エラーというのは、"サーバー側のプログラムが実行できているがアクセスに失敗している状態"の事で、それについて思い当たる節を考えていった結果、環境変数をENVで定義している事でした。

なのでHeroku側にも環境変数を登録してあげれば動くのではないかと考え設定しみました。

  • Herokuサイトで該当アプリのプロフィールを見る
  • settingのConfig Varsを開くと登録できる

設定すると無事動きました。

参考サイト - Herokuで本番環境の環境変数(config vars)を.envファイルで設定する

終わりに

ENVを使った影響で本番環境が動いていないということに気づくまで結構長い時間詰んでたので、うまく動いてくれて安心しています。