Module: ActiveSupport::ExecutionContext

Defined in:
lib/active_support/execution_context.rb

Overview

:nodoc:

Defined Under Namespace

Modules: TestHelper Classes: Record

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.nestableObject

Returns the value of attribute nestable.



38
39
40
# File 'lib/active_support/execution_context.rb', line 38

def nestable
  @nestable
end

Class Method Details

.[]=(key, value) ⇒ Object



69
70
71
72
# File 'lib/active_support/execution_context.rb', line 69

def []=(key, value)
  record.store[key.to_sym] = value
  @after_change_callbacks.each(&:call)
end

.after_change(&block) ⇒ Object



40
41
42
# File 'lib/active_support/execution_context.rb', line 40

def after_change(&block)
  @after_change_callbacks << block
end

.clearObject



96
97
98
# File 'lib/active_support/execution_context.rb', line 96

def clear
  IsolatedExecutionState[:active_support_execution_context] = nil
end

.current_attributes_instancesObject



100
101
102
# File 'lib/active_support/execution_context.rb', line 100

def current_attributes_instances
  record.current_attributes_instances
end

.popObject



87
88
89
90
91
92
93
94
# File 'lib/active_support/execution_context.rb', line 87

def pop
  if @nestable
    record.pop
  else
    clear
  end
  self
end

.pushObject



78
79
80
81
82
83
84
85
# File 'lib/active_support/execution_context.rb', line 78

def push
  if @nestable
    record.push
  else
    clear
  end
  self
end

.set(**options) ⇒ Object

Updates the execution context. If a block is given, it resets the provided keys to their previous value once the block exits.



46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
# File 'lib/active_support/execution_context.rb', line 46

def set(**options)
  options.symbolize_keys!
  keys = options.keys

  store = record.store

  previous_context = if block_given?
    keys.zip(store.values_at(*keys)).to_h
  end

  store.merge!(options)
  @after_change_callbacks.each(&:call)

  if block_given?
    begin
      yield
    ensure
      store.merge!(previous_context)
      @after_change_callbacks.each(&:call)
    end
  end
end

.to_hObject



74
75
76
# File 'lib/active_support/execution_context.rb', line 74

def to_h
  record.store.dup
end