Ruby 未使用Rack::FiberPool保留Sinatra会话

Ruby 未使用Rack::FiberPool保留Sinatra会话,ruby,sinatra,rack,thin,fiber,Ruby,Sinatra,Rack,Thin,Fiber,虽然我看不出我做错了什么,但在请求之间不会保留会话。密码 需要“sinatra” 需要“机架/光纤池” 类SessionTest

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

需要“sinatra”
需要“机架/光纤池”
类SessionTest
结果是,用
使用框架::会话::Cookie
替换
启用:会话
就足以让它工作

但是为什么

试试这个:

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”
需要“机架/光纤池”
类SessionTest
否则,Sinatra将在会话中间件之后设置光纤池,这不起作用。这不是一个bug,而是由
Rack::FiberPool
的工作方式引起的