module Interaptor

Constants

VERSION

Public Class Methods

included(base) click to toggle source
# File lib/interaptor.rb, line 9
def self.included(base)
  base.class_eval do
    include Callbacks
  end
end

Public Instance Methods

add_error(message, source: nil) click to toggle source
# 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) click to toggle source
# 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) click to toggle source
# 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) click to toggle source
# 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