Module: Interaptor
- Defined in:
- lib/interaptor.rb,
lib/interaptor/version.rb,
lib/interaptor/callbacks.rb
Defined Under Namespace
Modules: Callbacks, ClassMethods
Classes: Error, Failure, Result
Constant Summary
collapse
- VERSION =
"0.1.0"
Class Method Summary
collapse
Instance Method Summary
collapse
Class Method Details
.included(base) ⇒ Object
9
10
11
12
13
|
# File 'lib/interaptor.rb', line 9
def self.included(base)
base.class_eval do
include Callbacks
end
end
|
Instance Method Details
#add_error(message, source: nil) ⇒ Object
40
41
42
43
|
# File 'lib/interaptor.rb', line 40
def add_error(message, source: nil)
@result ||= Interaptor::Result.new(success: false)
@result.add_error(Interaptor::Error.new(message, source))
end
|
#call(*params) ⇒ Object
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
# File 'lib/interaptor.rb', line 15
def call(*params)
begin
value = call!(*params)
if @result && !@result.success?
return Interaptor::Result.new(success: false, errors: @result.errors)
end
return Interaptor::Result.new.tap do |result|
result.value = value
end
rescue Interaptor::Failure => e
return Interaptor::Result.new(success: false, errors: e.errors)
end
end
|
#call!(*params) ⇒ Object
32
33
34
35
36
37
38
|
# File 'lib/interaptor.rb', line 32
def call!(*params)
run_before_callbacks
value = execute(*params)
run_after_callbacks
return value
end
|
#fail!(message = nil, source: nil) ⇒ Object
45
46
47
48
49
|
# File 'lib/interaptor.rb', line 45
def fail!(message=nil, source: nil)
add_error(message, source: source) if message
raise Interaptor::Failure.new(@result ? @result.errors : [])
end
|