class Ably::Exceptions::BaseAblyException

Base Ably exception class that contains status and code values used by Ably Refer to github.com/ably/ably-common/blob/main/protocol/errors.json

@!attribute [r] message

@return [String] Error message from Ably

@!attribute [r] status

@return [String] HTTP status code of error

@!attribute [r] code

@return [String] Ably specific error code

Attributes

code[R]
request_id[R]
status[R]

Public Class Methods

new(message, status = nil, code = nil, base_exception = nil, options = {}) click to toggle source
Calls superclass method
# File lib/submodules/ably-ruby/lib/ably/exceptions.rb, line 19
def initialize(message, status = nil, code = nil, base_exception = nil, options = {})
  super message

  @base_exception = base_exception
  @status = status
  @status ||= base_exception.status if base_exception && base_exception.respond_to?(:status)
  @status ||= options[:fallback_status]
  @code = code
  @code ||= base_exception.code if base_exception && base_exception.respond_to?(:code)
  @code ||= options[:fallback_code]
  @request_id ||= options[:request_id]
end

Public Instance Methods

as_json(*args) click to toggle source
# File lib/submodules/ably-ruby/lib/ably/exceptions.rb, line 46
def as_json(*args)
  {
    message: "#{self.class}: #{message}",
    status: @status,
    code: @code
  }.delete_if { |key, val| val.nil? }
end
to_s() click to toggle source
Calls superclass method
# File lib/submodules/ably-ruby/lib/ably/exceptions.rb, line 32
def to_s
  message = [super]
  if status || code
    additional_info = []
    additional_info << "code: #{code}" if code
    additional_info << "http status: #{status}" if status
    additional_info << "base exception: #{@base_exception.class}" if @base_exception
    additional_info << "request_id: #{request_id}" if request_id
    message << "(#{additional_info.join(', ')})"
    message << "-> see https://help.ably.io/error/#{code} for help" if code
  end
  message.join(' ')
end