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



34
35
36
37
38
39
# File 'lib/action_params_contract/request_context.rb', line 34

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



22
23
24
25
26
27
28
29
30
31
32
# File 'lib/action_params_contract/request_context.rb', line 22

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
18
19
20
# File 'lib/action_params_contract/request_context.rb', line 15

def push(controller)
  stack = store[STACK_KEY] ||= []
  stack.push([store[ACTION_KEY], store[CONTROLLER_KEY]])
  store[ACTION_KEY]     = controller.action_name.to_sym
  store[CONTROLLER_KEY] = controller
end

.storeObject



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

def store = ActiveSupport::IsolatedExecutionState