class Sebastian::Result

Invokes the supplied block and wraps the return value in a Sebastian::Result object.

Example:

result = Sebastian::Result.new(value: 'foo')
result.ok?
  # => true
result.value
  # => 'foo'

result = Sebastian::Result.new(value: 'foo', errors: ['bar'])
result.ok?
  # => false
result.value!
  # => Sebastian::ServiceReturnedErrorsError

Attributes

errors[R]
value[R]

Public Class Methods

new(value:, errors:) click to toggle source
# File lib/sebastian/result.rb, line 21
def initialize(value:, errors:)
  @value = value
  @errors = errors
end

Public Instance Methods

inspect()
Alias for: to_s
ok?() click to toggle source
# File lib/sebastian/result.rb, line 26
def ok?
  @errors.empty?
end
to_s() click to toggle source
# File lib/sebastian/result.rb, line 35
def to_s
  if ok?
    "#<Sebastian::Result value: #{@value.inspect}>"
  else
    "#<Sebastian::Result errors: #{@errors.details.inspect}>"
  end
end
Also aliased as: inspect
value!() click to toggle source
# File lib/sebastian/result.rb, line 30
def value!
  return @value if ok?
  raise InvalidResultError, errors.full_messages.join(', ')
end