The reason stems from the ApplicationController of Rails, when a
request is received, the request is handled by a method that has access
to instance variables (session, request, params). Coming from the
Java/Struts world, this is a concern, and methods should not access
instance variables.
Is there a different model of theading in Ruby, or, would I be missing
something in Rails.
thanks!
AR.
Threading is no different in Ruby than it is in other languages, with regard
to guarding against concurrent access.
If there is a section of code that should only be accessed in a serial
fashion, control that access with a Mutex:
m = Mutex.new
m.synchronize do
@foo.update
@bar.count += 1
end
Ruby provides a rich set of support beyond mutexes for dealing with
threading issues, should you need them.
Kirk Haines
> The reason stems from the ApplicationController of Rails, when a
> request is received
[continuing] a new Controller instance is created, and the related instance
variables are those of this new instance. A controller instance is not reused
for multiple requests.
If you'd like to read the source, see actionpack/lib/action_controller/base.rb
Look for "def process" -- it a class method of Controller.
--
Nicholas Seckar aka. Ulysses