On Friday, July 14, 2017 at 9:40:56 AM UTC+1, Ralph Shnelvar wrote:
>
>
>
>
> In
> class User < ActiveRecord::Base
>  def self.any_users?
>    @any_users ||= exists?
>  end
> end
>
> So at some point in the code, I call
> User.any_users;
> So Ruby says "Ok, @any_users isn't defined so I'm going to call exists?"  
> That makes perfect sense.
>
> Let's say I have several people banging on my website.  Do each of them 
> get a completely different copy of Rails?  How many copies of @any_users 
> are there?  Does @any_users get initialized for each user?  What data is 
> common for all 
> threads? What's different for all threads?
>  
>
Where can I learn more about this?  I've skimmed 
> https://bearmetal.eu/theden/how-do-i-know-whether-my-rails-app-is-thread-safe-or-not/
>  
> but it really isn't helping me understand what is and isn't common between 
> each thread/user/session.
>

It depends on how you serve your rails app. For some setups you have many 
processes, each process handles a request at a time. Each process holds a 
completely separate copy of your rails application. Others use one process 
with many threads. This is one process, so there is only one copy of your 
rails app in memory. Some setups are a hybrid (many processes, each of 
which serving multiple concurrent requests).

As for the scope of you data, first off there isn't really such a thing as 
session scope. global / class variables are shared across all threads. If 
the data is an instance variable of a User, then it's specific to that user 
(note though that in the code you post @any_users is a instance variable of 
the User class (not an individual user), so it is shared.

Fred

-- 
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to rubyonrails-talk+unsubscr...@googlegroups.com.
To post to this group, send email to rubyonrails-talk@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/rubyonrails-talk/452fecf7-ebbb-49d6-9228-eadcedf0ca43%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to