Class: Thread

Inherits:
Object
  • Object
show all
Extended by:
InheritableThreadVars::ThreadClassExtensions
Defined in:
inheritable-thread-vars-0.0.3/lib/inheritable_thread_vars.rb

Defined Under Namespace

Modules: InheritableThreadVars

Class Method Summary collapse

Instance Method Summary collapse

Methods included from InheritableThreadVars::ThreadClassExtensions

new

Class Method Details

.inheritable_thread_local_var_getObject



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_setObject



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_varObject



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