class Resol::Service

Constants

Result

Public Class Methods

call(*args, **kwargs, &block) click to toggle source
# File lib/resol/service.rb, line 41
def call(*args, **kwargs, &block)
  command = build(*args, **kwargs)
  result = catch(command) do
    __run_callbacks__(command)
    command.call(&block)
    nil
  end
  return Resol::Success(result.data) unless result.nil?

  error_message = "No success! or fail! called in the #call method in #{command.class}"
  raise InvalidCommandImplementation, error_message
rescue self::Failure => e
  Resol::Failure(e)
end
call!(...) click to toggle source
# File lib/resol/service.rb, line 56
def call!(...)
  call(...).value_or { |error| raise error }
end
inherited(klass) click to toggle source
Calls superclass method
# File lib/resol/service.rb, line 36
def inherited(klass)
  klass.const_set(:Failure, Class.new(klass::Failure))
  super
end

Private Instance Methods

fail!(code, data = nil) click to toggle source

@!method call

# File lib/resol/service.rb, line 65
def fail!(code, data = nil)
  raise self.class::Failure.new(code, data)
end
success!(data = nil) click to toggle source
# File lib/resol/service.rb, line 69
def success!(data = nil)
  throw(self, Result.new(data))
end