我正在尝试使用 Sinatra 中的重定向和会话在站点周围传递一些数据。这是一个简化的示例,使用 PrettyPrint 进行调试:
require 'pp'
require 'rubygems'
require 'sinatra'
enable :sessions
get '/' do
session[:foo] = '12345'
puts 'session1'
pp session
redirect to('/redir')
end
get '/redir' do
puts 'session2'
pp session
'hello world'
end
查看 Thin 的输出,我看到:
>> Listening on 0.0.0.0:4567, CTRL+C to stop
session1
{"session_id"=>
"ea587d8afdcb2ada64f9b17cdd1fbae7b192dee5dfc2999ff9d323f1528f6a0f",
"foo"=>"12345"}
127.0.0.1 - - [19/Jul/2011 10:33:24] "GET / HTTP/1.1" 302 - 0.0042
session2
{}
127.0.0.1 - - [19/Jul/2011 10:33:24] "GET /redir HTTP/1.1" 200 11 0.0004
我在文档中看到的所有内容都表明这应该可以正常工作。事实上,/redir
即使我直接请求它,我也从来没有得到任何会话数据,并且会话会按照您对后续请求的期望持续存在/
。
想法?