LoginSignup
0
0

More than 3 years have passed since last update.

【Sinatra】エラー解決 Rack::Flash::SessionUnavailable at /

Posted at

はじめに

この記事の内容はSintaraでの開発中、rack-flash3を使ってフラッシュを表示させようとした時に発生した下記エラー、

Rack::Flash::SessionUnavailable at /
Rack::Flash depends on session middleware.

の解決方法について学んだ事を記しています。

解決への道のり

エラーを出したソースコードはこちら↓


require "rack-flash"

use Rack::Flash

エラー文はRack::Flashのセッションが利用できません、Rack::Flashはセッションミドルウェアに依存していますよ!ってな感じに訳せるかと思います。

という事でメンターさんにも聞いたりもしつつ、いろいろ調べて、READMEを見ていたら、ヒントがありました!

参考、引用)https://github.com/nakajima/rack-flash

If you're using Sinatra, you can use the flash hash just like in Rails:
(訳)Sinatraで使うとRailsと同じようにフラッシュハッシュを使えますよー、だと思う


#省略

require 'rack-flash'
#省略
enable :sessions
use Rack::Flash

#省略

enable :sessionsのところがセッションというワードが出てきてます、もしかしてこれ?

enable :sessionsとは、、、

実はSinatraではデフォルトでRackのセッション機能は無効化されているらしいです、
そして、enable :sessionsはセッションを有効にするための指定らしいです!

なるほどおお、絶対これだ!と思い、問題のコードに書き加えてページ更新してみました、、、がまたもエラー!

どうやら、、、

サーバーを再起動しないとなおりません!

この事に気づかず、僕はここからまた迷走してました笑

サーバーを再起動して無事解決〜♪

考察、学び

  • おそらく、Rack-flashはセッションを使ってフラッシュを保存している
  • Sinatraはセッション機能が無効化されていて、enable :sessionsを書いてサーバーを再起動しないと有効化されない
  • 再起動をしてみる、という事の大事さ

勉強になりました!

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