Forum: Ruby on Rails Qustion on rails new threading feature

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
328f0bb678423fcea01ebe3b0edc74e6?d=identicon&s=25 Ben Johnson (benjohnson)
on 2008-10-13 23:53
I am writing a library that deals with class variables. But until
recently all rails requests were in their own process. Now that
threading has been introduced I'm not sure how this effect class
variables, so I was hoping someone can shed some light on this.

If I am threading rails and do something like:

class ApplicationController < ActionController::Base
  around_filter :setting_class_var

  private
    def setting_class_var
      User.some_class_var = self
      yield
      User.some_class_var = nil
    end
end

My question is will this work properly while threading? I am unsure if
rails does any kind of mutual exclusion. Thanks!
3991f1dedc443618e34241312283dc60?d=identicon&s=25 Michael Sofaer (Guest)
on 2008-10-14 01:42
(Received via mailing list)
You will probably need to make those variables threadlocal.  Here's
the first thread I found on Ruby threadlocal variables, it doesn't
look like there's a native way, but it doesn't look hard:

http://www.ruby-forum.com/topic/160322

On Oct 13, 2:53 pm, Ben Johnson <rails-mailing-l...@andreas-s.net>
Bec38d63650c8912b6ba9b557fb953b9?d=identicon&s=25 Roger Pack (rogerdpack)
on 2008-10-15 07:54
>     def setting_class_var
>       User.some_class_var = self
>       yield
>       User.some_class_var = nil
>     end
> end
>
> My question is will this work properly while threading? I am unsure if
> rails does any kind of mutual exclusion. Thanks!

Yeah you'll want to use instance variables and avoid anything shared
(like class variables) unless you mean it to be shared.
-=R
This topic is locked and can not be replied to.