Actions
Feature #13009
closedImplement fetch for Thread.current
Description
It's a common idiom to use a fiber-local variable, but return a default value if it hasn't been assigned. Here's an example of Ruby code I would expect to be able to write:
def feature_enabled?
Thread.current.fetch(:feature_enabled, true)
end
Unfortunately, Thread.current does not implement fetch, like Hash does. So I have to write the more verbose:
def feature_enabled?
Thread.current.key?(:feature_enabled) ? Thread.current[:feature_enabled] : true
end
Thanks for your consideration!
Updated by shevegen (Robert A. Heiler) about 8 years ago
I can not say whether this feature is important or not, but on the syntax suggestion - I like the above (on the premise that it behaves as .fetch on Hash does; I have not checked this either).
Updated by nobu (Nobuyoshi Nakada) about 8 years ago
Thread.current
just returns a Thread
instance, so it should be Thread#fetch
method.
https://github.com/ruby/ruby/compare/trunk...nobu:feature/Thread%23fetch
Updated by matz (Yukihiro Matsumoto) almost 8 years ago
OK.
Matz
Updated by nobu (Nobuyoshi Nakada) almost 8 years ago
- Status changed from Open to Closed
Applied in changeset r57683.
Thread#fetch
- thread.c (rb_thread_fetch): add new method Thread#fetch.
[Feature #13009]
Actions
Like0
Like0Like0Like0Like0Like0