I am trying to simulate multiple users accessing my app from the same
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
I hope this makes sense.
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
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.
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.