I am trying to simulate multiple users accessing my app from the same development machine. To do so, I am trying to understand when Rails creates a session object and what triggers this. My tests indicate that an empty session object is created as soon as the server receives a HTTP request from a browser. If I open up another browser session on my development machine and issue another HTTP request, no new session object is created - Rails reuses the existing one. Why is this? Does Rails look at some specific information in the HTTP request headers when determining whether or not to create a new session object? I hope this makes sense.
on 2007-03-07 11:32
on 2007-03-07 13:24
it has to do with your browser. when a session is created, a cookie is set in your browser for the domain your are visiting. this cookie contains the host, path, name and value. for example, if i visit localhost:3000/ (my development machine), i get a cookie host: locahost path: / name: _session_id content: 1b87c8ad2bc274d96c7efb8a34ca5d3d cookies exist at the browser level, so if you open a new browser tab/window, and access the same page a second time, this cookie data is sent as part of the request since it already exists for the domain. Cookie: _session_id=1b87c8ad2bc274d96c7efb8a34ca5d3d and since you already have a cookie with the session id, and your app has a session stored with that id, you won't get a new one. you have some options. 1) test your rails app using integration testing to simulate multiple users. 2) use 2 different machines. 3) use 2 different browsers (ex: firefox and opera) from the same machine.