2011-05-30 58 views
2

會話不會在請求之間保留,儘管我看不到我做錯了什麼。碼!Sinatra會話沒有保存在Rack :: FiberPool

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 

回答

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 

否則西納特拉將在會議中間件,它不工作後成立的纖維池。這不是一個錯誤,而是由Rack::FiberPool工作方式造成的。

0

原來與use Rack::Session::Cookie更換enable :sessions就足以使其工作。

但是爲什麼!?