Sinatraでredirect_to_next
のクイックヘルパーを作成していましたが、これはsession[:next]
(存在する場合)またはデフォルトのパスにリダイレクトします。シナトラ、session
でSinatra/Rack session.fetch予期しない結果が発生する
は本当にラックが提供する、とspecによって、fetch
ためのインタフェースのようなハッシュを提供すると言われています。私は私の問題を説明するために、次のエラーヘルパーを書いた。上記のコードを実行します
error 401 do
session[:next] = request.path
puts "get #{session[:next]}"
puts "fetch #{session.fetch(:next, '/')}"
redirect "/login"
end
私がログインしていないとき/設定にアクセスしようとすると、I halt 401
。これは、私の端子に出力するものです。
get /settings
fetch/
:next
をキーとして存在しているので、そうでないかのように、なぜそれが私のデフォルトを与えていますか?
更新
この最小限の例と同じ挙動を示します。
require 'sinatra'
set :sessions, true
get '/' do
session[:testing] = "hello"
puts "get #{session[:testing]}"
puts "fetch #{session.fetch(:testing, 'goodbye')}"
end
ログ
[2012-04-29 14:11:51] INFO WEBrick::HTTPServer#start: pid=1954 port=9292
get hello
fetch goodbye
10.0.2.2 - - [29/Apr/2012 14:11:54] "GET/HTTP/1.1" 200 - 0.0485
ソフトウェア
- ルビー(1.9.3p194)
- ラック(1.4.1)
- シナトラ(1.3.2)
ここでは問題を再現できません。この動作を表示する最小限の完全な例を提供することは可能ですか? –