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
raise ProvisionError, "#{ivar_name} was not set in call() method"
end
end
@__result__
end
|