Module: ActionParamsContract::RequestContext

Defined in:
lib/action_params_contract/request_context.rb

Constant Summary collapse

ACTION_KEY =
:dry_params_validatable_action
CONTROLLER_KEY =
:dry_params_validatable_controller
ROOT_KEY =
:dry_params_validatable_root
STACK_KEY =
:dry_params_validatable_stack

Class Method Summary collapse

Class Method Details

.around(controller) ⇒ Object



39
40
41
42
43
44
# File 'lib/action_params_contract/request_context.rb', line 39

def around(controller)
  push(controller)
  yield
ensure
  pop
end

.current_actionObject



13
# File 'lib/action_params_contract/request_context.rb', line 13

def current_action     = store[ACTION_KEY]

.current_controllerObject



14
# File 'lib/action_params_contract/request_context.rb', line 14

def current_controller = store[CONTROLLER_KEY]

.current_rootObject



15
# File 'lib/action_params_contract/request_context.rb', line 15

def current_root       = store[ROOT_KEY]

.current_root=(key) ⇒ Object



17
18
19
# File 'lib/action_params_contract/request_context.rb', line 17

def current_root=(key)
  store[ROOT_KEY] = key
end

.popObject



25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/action_params_contract/request_context.rb', line 25

def pop
  stack = store[STACK_KEY]
  if stack.nil? || stack.empty?
    store[ACTION_KEY]     = nil
    store[CONTROLLER_KEY] = nil
    store[ROOT_KEY]       = nil
  else
    prev_action, prev_controller, prev_root = stack.pop
    store[ACTION_KEY]     = prev_action
    store[CONTROLLER_KEY] = prev_controller
    store[ROOT_KEY]       = prev_root
  end
end

.push(controller) ⇒ Object



21
22
23
# File 'lib/action_params_contract/request_context.rb', line 21

def push(controller)
  push_frame(controller.action_name.to_sym, controller)
end

.storeObject



11
# File 'lib/action_params_contract/request_context.rb', line 11

def store = ActiveSupport::IsolatedExecutionState

.with_simulated(action) ⇒ Object



46
47
48
49
50
51
# File 'lib/action_params_contract/request_context.rb', line 46

def with_simulated(action)
  push_frame(action.to_sym, nil)
  yield
ensure
  pop
end