Class: Thread
Defined Under Namespace
Modules: InheritableThreadVars
Class Method Summary
collapse
Instance Method Summary
collapse
new
Class Method Details
.inheritable_thread_local_var_get ⇒ Object
51
52
53
|
# File 'inheritable-thread-vars-0.0.3/lib/inheritable_thread_vars.rb', line 51
def inheritable_thread_local_var_get(...)
Thread.current.inheritable_thread_local_var_get(...)
end
|
.inheritable_thread_local_var_set ⇒ Object
55
56
57
|
# File 'inheritable-thread-vars-0.0.3/lib/inheritable_thread_vars.rb', line 55
def inheritable_thread_local_var_set(...)
Thread.current.inheritable_thread_local_var_set(...)
end
|
.with_inheritable_thread_local_var ⇒ Object
59
60
61
|
# File 'inheritable-thread-vars-0.0.3/lib/inheritable_thread_vars.rb', line 59
def with_inheritable_thread_local_var(...)
Thread.current.with_inheritable_thread_local_var(...)
end
|
Instance Method Details
#inheritable_thread_local_var_get(var_name) ⇒ Object
NOTE: because there’s not a way to unset a thread variable, storing nil is used as deletion. this means that a thread local variable with nil can’t have any semantic meaning and should be treated the same as if #thread_variable? had returned false.
79
80
81
82
83
84
85
86
87
|
# File 'inheritable-thread-vars-0.0.3/lib/inheritable_thread_vars.rb', line 79
def inheritable_thread_local_var_get(var_name)
key = var_name.to_sym
if @inheritable_thread_locals&.key?(key)
@inheritable_thread_locals[key]
else
@thread_parent&.inheritable_thread_local_var_get(key)
end
end
|
#inheritable_thread_local_var_set(var_name, value) ⇒ Object
89
90
91
92
|
# File 'inheritable-thread-vars-0.0.3/lib/inheritable_thread_vars.rb', line 89
def inheritable_thread_local_var_set(var_name, value)
@inheritable_thread_locals ||= {}
@inheritable_thread_locals[var_name.to_sym] = value
end
|
#with_inheritable_thread_local_var(key, value, &block) ⇒ Object
94
95
96
97
98
99
100
101
102
103
|
# File 'inheritable-thread-vars-0.0.3/lib/inheritable_thread_vars.rb', line 94
def with_inheritable_thread_local_var(key, value, &block)
old_value = inheritable_thread_local_var_get(key)
begin
inheritable_thread_local_var_set(key, value)
block.call
ensure
inheritable_thread_local_var_set(key, old_value)
end
end
|