読者です 読者をやめる 読者になる 読者になる

SinatraのSessionがページ遷移時に切れる

ruby Web

1週間くらいこの問題と格闘してたかも。

現象

Sinatraでセッションを利用していたんだけれども、ページを遷移すると同じドメイン内なのにセッションが空になってしまう。謎だ。
問題のソースコードはこちら。
プロジェクトの中からセッションに関わる部分だけを抽出。

Wrong usage of sinatra session

解決

StackOverFlowのこのページにて解決。
【参考URL】ruby - Sinatra clears session on post - Stack Overflow

何がいけなかったか。修正版のソースはこちら。

Sinatra basic sample using session

わかるだろうか?
そう、7行目のセッションを有効化するところだけ違う。
詳細はよくわかってないのだが、いろいろな入門サイトにある

enable :sessions

これはrack-protectionが有効になっているかなんだからしい。なので

use Rack::Session::Cookie

としてやればいいみたい。