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

rack, ruby, session

Solution

`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"

Problem

``` 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!

Original source