似乎无法将Rack::Session
与async_sinatra
的{{1}}方法结合使用。我收集这是因为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:Hello World!”正如预期的那样,/foo
呈现“bar:”,导致整个城镇周围的皱眉。该怎么办?这不可能吗?
答案 0 :(得分:0)
您必须在body
调用之前调用会话中间件:
aget "/bar" do
message = session[:message]
body "bar: #{message}"
end