如何在Rack应用程序中设置/获取会话变量?

reb*_*oob 19 ruby session rack

use Rack::Session::Pool
...
session[:msg]="Hello Rack"
Run Code Online (Sandbox Code Playgroud)

编辑:单词会话似乎没有解决.我在我的config.ru中包含了Session pool中间件,并尝试在ERB文件中设置一个变量(我正在使用Ruby Serve)并且它抱怨"未定义的局部变量或方法`session'"

谢谢!

mat*_*att 30

session是一种方法,它是某些Web框架的一部分,例如SinatraRails都有session方法.普通rack应用程序没有session方法,除非您自己添加一个方法.

会话哈希存储在密钥下的机架env哈希中rack.session,因此您可以像这样访问它(假设您已将机架环境命名为您的应用程序env):

env['rack.session'][:msg]="Hello Rack"
Run Code Online (Sandbox Code Playgroud)

或者,您可以使用Rack的内置request对象,如下所示:

request = Rack::Request.new(env)
request.session[:msg]="Hello Rack"
Run Code Online (Sandbox Code Playgroud)