module Xhummingbird

Constants

Event
LOGGER
VERSION
XH_SERVICE

Public Class Methods

debug(*args) click to toggle source
# File lib/xhummingbird.rb, line 20
def self.debug(*args)
  LOGGER.debug(*args) if ENV['XH_DEBUG']
end
default_service() click to toggle source
# File lib/xhummingbird.rb, line 116
def self.default_service
  debug(__method__)

  ENV.fetch(XH_SERVICE, "")
end
default_tags() click to toggle source
# File lib/xhummingbird.rb, line 84
def self.default_tags
  debug(__method__)

  {
    "default/sdk" => "Ruby #{Xhummingbird::VERSION}",
    "default/hostname" =>  Socket.gethostname,
    "default/ruby_version" =>  RUBY_VERSION,
    "default/pid" =>  Process.pid.to_s,
    "default/thread_object_id" => Thread.current.object_id.to_s
  }
end
enabled?() click to toggle source
# File lib/xhummingbird.rb, line 78
def self.enabled?
  debug(__method__)

  Client.instance.enabled?
end
format_hash(hash) click to toggle source
# File lib/xhummingbird.rb, line 104
def self.format_hash(hash)
  debug(__method__)

  formatted = {}

  hash.each do |k, v|
    formatted[k.to_s] = v.to_s
  end

  formatted
end
send(**args) click to toggle source
# File lib/xhummingbird.rb, line 96
def self.send(**args)
  debug(__method__)

  event = Event.new(**args)
  message = Event.encode(event)
  Client.instance.send(message)
end
send_event(**args) click to toggle source
# File lib/xhummingbird.rb, line 68
def self.send_event(**args)
  debug(__method__)

  return unless enabled?

  send(**args)
rescue => e
  debug(e)
end
send_exception(exception, level: 2, tags: {}, service: nil) click to toggle source
# File lib/xhummingbird.rb, line 50
def self.send_exception(exception, level: 2, tags: {}, service: nil)
  debug(__method__)

  return unless enabled?

  send(
    level: level,
    title: exception.class.name,
    message: exception.message,
    trace: exception.backtrace,
    tags: default_tags.merge(format_hash(tags)),
    timestamp: Time.now,
    service: service || default_service
  )
rescue => e
  debug(e)
end
send_trace(title:, message: "", level: 1, tags: {}, service: nil) click to toggle source
# File lib/xhummingbird.rb, line 32
def self.send_trace(title:, message: "", level: 1, tags: {}, service: nil)
  debug(__method__)

  return unless enabled?

  send(
    level: level,
    title: title.to_s,
    message: message.to_s,
    trace: caller,
    tags: default_tags.merge(format_hash(tags)),
    timestamp: Time.now,
    service: service || default_service
  )
rescue => e
  debug(e)
end
start() click to toggle source
# File lib/xhummingbird.rb, line 24
def self.start
  debug(__method__)

  Client.instance.start

  send_trace(title: "Started", message: "Xhummingbird Ruby SDK started.", level: 0)
end