Class: RSMP::Failure

Inherits:
Data
  • Object
show all
Defined in:
lib/rsmp/failure.rb

Overview

An expected operational failure. Failures are values: they describe why an operation could not complete without changing Async task control flow.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(code:, message:, source:, context: {}, cause: nil) ⇒ Failure

Returns a new instance of Failure.

Raises:

  • (ArgumentError)


5
6
7
8
9
10
11
12
13
14
15
16
17
# File 'lib/rsmp/failure.rb', line 5

def initialize(code:, message:, source:, context: {}, cause: nil)
  raise ArgumentError, 'failure code must be a Symbol' unless code.is_a?(Symbol)
  raise ArgumentError, 'failure source must be a Symbol' unless source.is_a?(Symbol)
  raise ArgumentError, 'failure context must be a Hash' unless context.is_a?(Hash)

  super(
    code: code,
    message: message.to_s.freeze,
    source: source,
    context: context.dup.freeze,
    cause: cause
  )
end

Instance Attribute Details

#causeObject (readonly)

Returns the value of attribute cause

Returns:

  • (Object)

    the current value of cause



4
5
6
# File 'lib/rsmp/failure.rb', line 4

def cause
  @cause
end

#codeObject (readonly)

Returns the value of attribute code

Returns:

  • (Object)

    the current value of code



4
5
6
# File 'lib/rsmp/failure.rb', line 4

def code
  @code
end

#contextObject (readonly)

Returns the value of attribute context

Returns:

  • (Object)

    the current value of context



4
5
6
# File 'lib/rsmp/failure.rb', line 4

def context
  @context
end

#messageObject (readonly)

Returns the value of attribute message

Returns:

  • (Object)

    the current value of message



4
5
6
# File 'lib/rsmp/failure.rb', line 4

def message
  @message
end

#sourceObject (readonly)

Returns the value of attribute source

Returns:

  • (Object)

    the current value of source



4
5
6
# File 'lib/rsmp/failure.rb', line 4

def source
  @source
end

Instance Method Details

#to_sObject



19
20
21
# File 'lib/rsmp/failure.rb', line 19

def to_s
  message.empty? ? code.to_s : message
end