module Sinatra::RPC::Fault

This module is used to generate all custom RPC errors.

Public Class Methods

register(fault_name, error_code) click to toggle source

Generate a new fault class. The class will be a subclass of RuntimeError, and always include the Fault module.

@param fault_name [String, Symbol] An identifier for the fault; if

the name is e.g. 'bad_request', a new class named BadRequestFault
is generated

@param error_code [Integer] A unique numeric code for this fault @example

Sinatra::RPC::Fault.register :bad_request, 400
Sinatra::RPC::BadRequestFault::CODE                       # => 400
raise Sinatra::RPC::BadRequestFault, "Bad request"
RuntimeError === Sinatra::RPC::BadRequestFault.new        # => true
Sinatra::RPC::Fault === Sinatra::RPC::BadRequestFault.new # => true
# File lib/sinatra/rpc/fault.rb, line 20
def self.register(fault_name, error_code)
  fault_class = Class.new(RuntimeError) do
    include Sinatra::RPC::Fault
    def code
      self.class.const_get 'CODE'
    end
  end

  fault_class.const_set 'CODE', error_code

  class_name = "#{Sinatra::RPC::Utils.camelize fault_name}Fault"
  Sinatra::RPC.const_set(class_name, fault_class)
end

Public Instance Methods

code() click to toggle source
# File lib/sinatra/rpc/fault.rb, line 23
def code
  self.class.const_get 'CODE'
end