LoginSignup
1
1

More than 5 years have passed since last update.

sessionの記述があるコードをHerokuにデプロイする際の留意点

Posted at

Herokuにデプロイした際にエラー

We're sorry, but something went wrong.
If you are the application owner check the logs for more information.

そもそもアプリが表示されないエラーに対する解決コードは【Rails5】ローカルでは動くが、Herokuで動かない。より

heroku pg:reset DATABASE
heroku run rake db:migrate

を打つことで解決。

特定のページを開くとエラー

The page you were looking for doesn't exist.
You may have mistyped the address or the page may have moved.

セッション情報が既に存在し、それに対応するデータベースが存在している段階では問題なく動いていたものの、コードの記述変更やsession情報が空であった際の処理などを記述した後で

git push heroku master

を実行した際に接するエラーがこれ。
Heroku公式サイト open app右のバーより、logsを確認すると
dbをリセットしてmigrateした為にデータベースが存在しないにも関わらず

session[:id]に対応するデータベースカラムが見つかりません!

というエラーを吐いていることが確認できる。

ローカル環境で再現

herokuで問題が起きている原因はデータベースがないにも関わらず、それを参照しているsessionが引っかかっていることによって起きているので、ローカル環境でもデーターベースをリセットする。
すると、全く同じエラーが発生していることに気がつく。
sessionが存在しない情報を保持していることが問題なので

<% session[:任意] = nil %>

をエラーを吐くページ及び、session情報を送信するページに記述することでsession情報を空にする。
すると問題なく、データベースが存在しない際に、データは空ですと記述を加えたページがエラーなく表示されるようになる。

なぜエラーが起きたのか

上記に書いた通り、一連のエラーは全てsessionが原因である。
「sessionは一時的にCookieのように働く仕組み〜・・」的な曖昧な知見で利用すると、発生したエラーを特定するまでにしばらくかかりました・・。
パスもコードも正しく記述出来ている筈なのに、なぜ表示されないのだろうとググって拾ったコードを試してみても解決されない場合は、まずlogsを確認して問題点を見つけるのが大事だと学びました。

1
1
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
1
1