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
STACK_KEY =
:dry_params_validatable_stack

Class Method Summary collapse

Class Method Details

.around(controller) ⇒ Object



31
32
33
34
35
36
# File 'lib/action_params_contract/request_context.rb', line 31

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

.current_actionObject



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

def current_action     = store[ACTION_KEY]

.current_controllerObject



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

def current_controller = store[CONTROLLER_KEY]

.popObject



19
20
21
22
23
24
25
26
27
28
29
# File 'lib/action_params_contract/request_context.rb', line 19

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

.push(controller) ⇒ Object



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

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

.storeObject



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

def store = ActiveSupport::IsolatedExecutionState

.with_simulated(action) ⇒ Object



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

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