# Qustion on rails new threading feature

**URL:** <https://www.ruby-forum.com/t/qustion-on-rails-new-threading-feature/150834>\
**Category:** Rails\
**Created:** [October 13, 2008, 11:53pm UTC](https://www.ruby-forum.com/t/qustion-on-rails-new-threading-feature/150834 "2008-10-13T23:53:27Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![benjohnson](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/b/3ec8ea/32.png) [@benjohnson](https://www.ruby-forum.com/u/benjohnson)\
**Post date:** [October 13, 2008, 11:53pm UTC](https://www.ruby-forum.com/t/qustion-on-rails-new-threading-feature/150834/1 "2008-10-13T23:53:27Z")

</div>

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!

---

<div class="post-metadata">

**Author:** ![benjohnson](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/b/3ec8ea/32.png) [@benjohnson](https://www.ruby-forum.com/u/benjohnson)\
**Post date:** [October 14, 2008, 1:42am UTC](https://www.ruby-forum.com/t/qustion-on-rails-new-threading-feature/150834/2 "2008-10-14T01:42:22Z")

</div>

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](http://www.ruby-forum.com/topic/160322)

On Oct 13, 2:53 pm, Ben J. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)

---

<div class="post-metadata">

**Author:** ![benjohnson](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/b/3ec8ea/32.png) [@benjohnson](https://www.ruby-forum.com/u/benjohnson)\
**Post date:** [October 15, 2008, 7:54am UTC](https://www.ruby-forum.com/t/qustion-on-rails-new-threading-feature/150834/3 "2008-10-15T07:54:27Z")

</div>

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