【发布时间】:2016-03-06 00:21:31
【问题描述】:
我似乎无法让这些会话继续到其他页面。
app.rb:
class MyApp < Sinatra::Base
use Rack::Session::Pool, :expire_after => 60 * 1
get "/" do
@foo = "one two three"
erb :index
end
get "/first" do
session[:foo] = Time.now
session[:message] = "ALPHA"
session[:message1] = "CHARLIE"
erb :first
end
get "/second" do
session[:message2] = "BRAVO2"
erb :second
end
end
在 /first 和 /second 内部:
Sess: <%= session.inspect %><br>
会话不想跨页面进行。在 /first 我显示这个:
Sess: {"message"=>"ALPHA", "message1"=>"CHARLIE", "foo"=>2015-12-01 17:05:31 -0500}
在 /second 我正在显示这个:
Sess: {"message2"=>"BRAVO2"}
【问题讨论】:
-
对我来说很好。你是如何启动应用程序的?您使用的是
shotgun还是类似的东西? -
乘客端。需要 File.expand_path('app', File.dirname(FILE)) 运行 MyApp
-
这也许可以解释。我怀疑每个请求都被Passenger路由到不同的Ruby进程,所以会话(存储在进程中)在第二个请求中不可用。尝试使用
rackup直接运行您的应用,看看它是否可以在那里运行。 -
我刚刚重命名了always_restart.txt,会话从/first 到/second,但是/third 没有显示会话。它只有 erb 文件 :third ,没有别的。我需要打电话来完成吗?
-
抱歉,我不知道——我对Passenger的了解已经达到了极限。 (顺便说一句,您的问题中没有
third路线。)