Sha256: 9b7d9cf433a17c190d68af59a2bae00cfbf260aa7158bc46a1419894e58185fa

Contents?: true

Size: 1.31 KB

Versions: 2

Compression:

Stored size: 1.31 KB

Contents

require 'captivus/util'
require "captivus/version"
require 'captivus/configuration'
require 'captivus/notifier'
require 'captivus/backtrace'
require 'captivus/payload'

module Captivus
  class << self
    def config
      @config ||= Configuration.new
    end

    def configure(*args, &block)
      config.configure *args, &block
    end

    def notifier
      @notifier ||= Notifier.new config
    end

    def notify(exception, data = {})
      notifier.notify build_payload(exception, data)
    end

    private

    def build_payload(exception, data = {})
      if exception.respond_to?(:class) && exception.class.respond_to?(:name) && exception.respond_to?(:message)
        event_json = {
          'type' => exception.class.name,
          'message' => exception.message,
          'timestamp' => Time.now.utc.strftime("%Y-%m-%dT%H:%M:%SZ")
        }
      else
        raise ArgumentError, "Unexpected exception: #{exception.inspect}"
      end

      Payload.new(Captivus::Util.hash_to_json({
        'notifier' => {'name' => 'captivus', 'version' => Captivus::VERSION, 'language' => 'Ruby'},
        'event' => event_json,
        'backtrace' => Backtrace.new(exception).as_json,
        'environment' => {'name' => config.environment}
      }.merge(data)))
    end
  end
end

require 'captivus/railtie' if defined?(Rails::Railtie)

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
captivus-0.0.6 lib/captivus.rb
captivus-0.0.5 lib/captivus.rb