class ExceptionNotifier::GoogleChatNotifier

Public Instance Methods

call(exception, opts = {}) click to toggle source
# File lib/exception_notifier/google_chat_notifier.rb, line 7
def call(exception, opts = {})
  options = base_options.merge(opts)
  formatter = Formatter.new(exception, options)

  HTTParty.post(
    options[:webhook_url],
    body: { text: body(exception, formatter) }.to_json,
    headers: { 'Content-Type' => 'application/json' }
  )
end

Private Instance Methods

body(exception, formatter) click to toggle source
# File lib/exception_notifier/google_chat_notifier.rb, line 20
def body(exception, formatter)
  text = [
    "\nApplication: *#{formatter.app_name}*",
    formatter.subtitle,
    '',
    formatter.title,
    "*#{exception.message.tr('`', "'")}*"
  ]

  if (request = formatter.request_message.presence)
    text << ''
    text << '*Request:*'
    text << request
  end

  if (backtrace = formatter.backtrace_message.presence)
    text << ''
    text << '*Backtrace:*'
    text << backtrace
  end

  text.compact.join("\n")
end