class Ni::Flows::IsolatedInlineInteractor

Attributes

action[RW]
interactor_klass[RW]
provide_list[RW]
receive_list[RW]

Public Class Methods

new(interactor_klass, action, options={}) click to toggle source
# File lib/ni/flows/isolated_inline_interactor.rb, line 5
def initialize(interactor_klass, action, options={})
  self.interactor_klass, self.action = interactor_klass, action
  self.receive_list, self.provide_list = Array(options[:receive]), Array(options[:provide])
end

Public Instance Methods

call(context) click to toggle source
# File lib/ni/flows/isolated_inline_interactor.rb, line 10
def call(context)
  isolated_context = Ni::Context.new(nil, action)
  isolated_context.assign_data!(context.slice(*receive_list))

  result = interactor_klass.public_send(action, isolated_context)

  provide_list.each do |param_name|
    context[param_name] = result.context[param_name]
  end
end