Project

General

Profile

Actions

Feature #13009

closed

Implement fetch for Thread.current

Added by dwbutler (David Butler) over 7 years ago. Updated about 7 years ago.

Status:
Closed
Target version:
-
[ruby-core:78500]

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) over 7 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) over 7 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 ko1 (Koichi Sasada) over 7 years ago

  • Assignee set to nobu (Nobuyoshi Nakada)

2.4? 2.5?

Actions #5

Updated by nobu (Nobuyoshi Nakada) about 7 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

Also available in: Atom PDF

Like0
Like0Like0Like0Like0Like0