On Oct 27, 3:30 pm, Giuseppe
<giuseppe.bert...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
wrote:> Hello,
> getting and setting values in the Thread.current hash appears in the RoR
> code a bunch of times, including in active_record and active_support.
> I keep getting conflicting information, however, on whether information
> stored in Thread.current is dependable.
> In essence, this is my question:
>
> *Is the Thread.current hash guaranteed to be available and private
> throughout one and only one request-response cycle?*
>
I would feel odd about relying on some subsequent request not using
the same thread - using a pool of threads to handle requests seems
entirely reasonable (and a quick experiment implies that thin/sinatra
does this).
Thread.current isn''t going to change under your feet though, not
unless you explicitly try and run code in another thread.
Regarding privacy, any other bit of ruby that happens to be running
can list all threads and read/write to their thread local information,
but they''re obviously not going to do that for shits and giggles.
Other than picking keys that are unlikely to clash with other stuff I
wouldn''t worry about it.
Fred
> In other words, if I do something like:
> Thread.current[:my_own_very_special_key] = 1
> at the beginning of a response, can I count on all parts of my application,
> including models(*), to reliably access that value?
>
> Provided I also do:
> Thread.current[:my_own_very_special_key] = nil
> just before the end of the response (say, in a controller''s
after_filter),
> am I guaranteed that the information is not leaked to other
> processes/threads/requests/browsers/users?
>
> (OK, I have just given out my ignorance of webserver and webapp framework
> innards. Oh well...)
>
> Thanks!
> Giuseppe
>
> (*) I know that accessing Thread.current from my models is frowned upon,
> but I would very much like to know if the practice is safe, albeit ugly.
--
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
rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-talk+unsubscribe@googlegroups.com.
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en.