1

Rack::Sessionasync_sinatra'方法一起使用aroute似乎是不可能的。我认为这是因为在会话中间件有机会修改必要的标头之前async_sinatra引发:async,但这似乎是一个常见问题。有没有办法在不重写会话中间件的情况下完成这项工作?我是否忽略了一些明显的东西?

require "sinatra/async"

class AsyncTest < Sinatra::Base
  register Sinatra::Async

  enable :sessions

  aget "/foo" do
    session[:message] = "Hello World!"
    body "foo: #{session[:message]}"
  end

  aget "/bar" do
    body "bar: #{session[:message]}"
  end

  run! if app_file == $0
end

访问/foo呈现“foo:Hello World!” 正如预期的那样,但/bar呈现“bar:”,引起全城的皱眉。该怎么办?这是不可能的吗?

4

1 回答 1

0

您必须在调用之前body调用会话中间件:

aget "/bar" do
  message = session[:message]
  body "bar: #{message}"
end
于 2013-04-12T12:37:24.393 回答