2

セッションはリクエスト間で保持されませんが、何が間違っているのかわかりません。コード!

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
4

2 に答える 2

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動作が原因です。

于 2011-06-08T17:49:55.290 に答える
0

で置き換えるだけenable :sessionsuse Rack::Session::Cookie十分であることがわかりました。

しかし、なぜ!?

于 2011-05-30T22:57:32.970 に答える