Sinatra会话未与Rack :: FiberPool保留

时间:2011-05-30 22:50:38

标签: ruby sinatra rack thin fiber

会话不会在请求之间保留,但我看不出我做错了什么。代码!

require 'sinatra'
require 'rack/fiber_pool'

class SessionTest < Sinatra::Base
  use Rack::FiberPool
  enable :sessions
  set :session_secret, "foobar"

  get '/' do
        body { session.inspect } #This is always '{}'!
  end

  get '/a' do
    session['user'] = "bob"
    redirect '/'
  end
end

run SessionTest.new

2 个答案:

答案 0 :(得分:1)

请改为尝试:

require 'sinatra'
require 'rack/fiber_pool'

class SessionTest < Sinatra::Base
  enable :sessions
  set :session_secret, "foobar"

  get '/' do
        body { session.inspect } #This is always '{}'!
  end

  get '/a' do
    session['user'] = "bob"
    redirect '/'
  end
end

use Rack::FiberPool
run SessionTest.new

否则Sinatra将在会话中间件之后设置光纤池,但这不起作用。这不是一个错误,而是由Rack::FiberPool的工作方式引起的。

答案 1 :(得分:0)

使用enable :sessions替换use Rack::Session::Cookie足以使其正常运行。

但为什么!?