Exception: Pangea::Errors::PangeaError

Inherits:
StandardError
  • Object
show all
Defined in:
lib/pangea/errors.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(message, context: {}, cause: nil) ⇒ PangeaError

Returns a new instance of PangeaError.



22
23
24
25
26
27
# File 'lib/pangea/errors.rb', line 22

def initialize(message, context: {}, cause: nil)
  super(message)
  @context = context
  @cause_chain = build_cause_chain(cause || self.cause)
  @timestamp = Time.now
end

Instance Attribute Details

#cause_chainObject (readonly)

Returns the value of attribute cause_chain.



20
21
22
# File 'lib/pangea/errors.rb', line 20

def cause_chain
  @cause_chain
end

#contextObject (readonly)

Returns the value of attribute context.



20
21
22
# File 'lib/pangea/errors.rb', line 20

def context
  @context
end

#timestampObject (readonly)

Returns the value of attribute timestamp.



20
21
22
# File 'lib/pangea/errors.rb', line 20

def timestamp
  @timestamp
end

Instance Method Details

#detailed_messageObject



29
30
31
32
33
34
# File 'lib/pangea/errors.rb', line 29

def detailed_message
  lines = ["[#{@timestamp.iso8601}] #{self.class.name}: #{message}"]
  lines << "Context: #{format_context}" if @context.any?
  lines << "Cause chain:\n#{format_cause_chain}" if @cause_chain.any?
  lines.join("\n")
end

#to_hObject



36
37
38
39
40
41
42
43
44
# File 'lib/pangea/errors.rb', line 36

def to_h
  {
    error_type: self.class.name,
    message: message,
    context: @context,
    cause_chain: @cause_chain,
    timestamp: @timestamp.iso8601
  }
end