On Wednesday, September 12, 2012 2:11:41 AM UTC+1, Jeffrey Jones wrote: > > Hello all. > > I am planning on using ActiveSupport::Notifications and have a question > about threading. For the purposes of this question I am assuming > config.threadsafe! is enabled. > > Will a subscriber execute in the same thread as the code that caused it to > be triggered or do they run in separate threads? > > I would have thought that was easy to test. Currently everything happens on the thread triggering the event. There's also code in rails (eg ActiveRecord's logsubscriber) that use thread local variables in notification processing so I wouldn't that would be changed in a hurry.
Fred > The reason I ask is that I would like to do something like > > In Controller Code: > > def action > Module.events[Thread.current] = Event.new # Module.events returns a hash > # rest of action code > end > > And elsewhere: > > ActiveSupport::Notifications.subscribe "process_action.action_controller" > do |name, start, finish, id, payload| > event = Module.events[Thread.current] # returns the Event that was > created in the controller. > # Do processing on event > end > > Obviously if the Subscriber runs in a different thread then this will not > work since Thread.current will not match so I wanted to check. Note that in > this case I do not want to pass the Event as part of the payload because I > want to be able to use existing rails built-in notifications without having > to modify them. > > Cheers > > Jeff > > > > > -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msg/rubyonrails-talk/-/zaXAeHVURIUJ. For more options, visit https://groups.google.com/groups/opt_out.

