Module: Logicum::Interactor::CallInterface

Defined in:
lib/logicum/interactor.rb

Instance Method Summary collapse

Instance Method Details

#callObject

Raises:



42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
# File 'lib/logicum/interactor.rb', line 42

def call(*, **)
  raise MissingCallError unless defined? super

  @__result__ = Result.new

  begin
    super
  rescue StandardError => e
    @__result__.fail! e.message
  end

  self.class.provisions.each do |attr|
    ivar_name = "@#{attr}"
    if instance_variable_defined? ivar_name
      val = instance_variable_get ivar_name
      @__result__.define_singleton_method(attr) { val }
    else
      # Calling code must ensure instance variables to provide are
      # set before any code which could raise an exception.
      raise ProvisionError, "#{ivar_name} was not set in call() method"
    end
  end

  @__result__
end