是否可以将Rack :: Session中间件与async_sinatra一起使用?

时间:2012-11-27 01:00:41

标签: ruby session sinatra rack

似乎无法将Rack::Sessionasync_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:”,导致整个城镇周围的皱眉。该怎么办?这不可能吗?

1 个答案:

答案 0 :(得分:0)

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

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