简体   繁体   中英

How do I set/get session vars in a Rack app?

use Rack::Session::Pool
...
session[:msg]="Hello Rack"

EDIT: The word session doesn't seem to resolve. I included the Session pool middleware in my config.ru, and try to set a variable in an ERB file (I'm using Ruby Serve) and it complains "undefined local variable or method `session'"

Thanks!

session is a method that is part of some web frameworks, for example Sinatra and Rails both have session methods. Plain rack applications don't have a session method, unless you add one yourself.

The session hash is stored in the rack env hash under the key rack.session , so you can access it like this (assuming you've named the rack environment to your app env ):

env['rack.session'][:msg]="Hello Rack"

Alternatively, you could use Rack's built in request object , like this:

request = Rack::Request.new(env)
request.session[:msg]="Hello Rack"

You need to load rack::session module next probably cookie like here http://rack.rubyforge.org/doc/classes/Rack/Session/Cookie.html

This like explains it with example.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM