module ExceptionNotification::NotifiableHelper

Copyright © 2008-2009 Peter H. Boling of 9thBit LLC Released under the MIT license

Private Instance Methods

get_exception_data() click to toggle source
# File lib/exception_notification/notifiable_helper.rb, line 20
def get_exception_data
  deliverer = self.class.exception_data
  return case deliverer
    when nil then {}
    when Symbol then send(deliverer)
    when Proc then deliverer.call(self)
  end
end
get_method_name() click to toggle source
# File lib/exception_notification/notifiable_helper.rb, line 13
def get_method_name
  if  /`(.*)'/.match(caller.first)
    return $1
  end
  nil
end
perform_exception_notify_mailing(exception, data, request = nil, the_blamed = nil, verbose = false, rejected_sections = nil) click to toggle source
# File lib/exception_notification/notifiable_helper.rb, line 44
def perform_exception_notify_mailing(exception, data, request = nil, the_blamed = nil, verbose = false, rejected_sections = nil)
  if ExceptionNotification::Notifier.config[:exception_recipients].blank?
    puts("[EMAIL NOTIFICATION] ExceptionNotification::Notifier.config[:exception_recipients] is blank, notification cancelled!") if verbose
  else
    class_name = self.respond_to?(:controller_name) ? self.controller_name : self.to_s
    method_name = self.respond_to?(:action_name) ? self.action_name : get_method_name
    ExceptionNotification::Notifier.deliver_exception_notification(exception, class_name, method_name,
      request, data, the_blamed, rejected_sections)
    puts("[EMAIL NOTIFICATION] Sent") if verbose
  end
end
should_email_on_exception?(exception, status_cd = nil, verbose = false) click to toggle source
# File lib/exception_notification/notifiable_helper.rb, line 56
def should_email_on_exception?(exception, status_cd = nil, verbose = false)
  environment_is_noisy? && notification_level_sends_email? && !ExceptionNotification::Notifier.config[:exception_recipients].blank? && should_notify_on_exception?(exception, status_cd, verbose)
end
should_notify_on_exception?(exception, status_cd = nil, verbose = false) click to toggle source

Relies on the base class to define be_silent_for_exception?

# File lib/exception_notification/notifiable_helper.rb, line 65
def should_notify_on_exception?(exception, status_cd = nil, verbose = false)
  # don't notify (email or web hooks) on exceptions raised locally
  verbose && ExceptionNotification::Notifier.config[:skip_local_notification] && is_local? ?
    puts("[NOTIFY LOCALLY] NO") :
    nil
  return false if ExceptionNotification::Notifier.config[:skip_local_notification] && is_local?
  # don't notify (email or web hooks) exceptions raised that match ExceptionNotifiable.notifiable_silent_exceptions
  return false if self.be_silent_for_exception?(exception)
  return true if ExceptionNotification::Notifier.config[:notify_error_classes].include?(exception.class)
  return true if !status_cd.nil? && ExceptionNotification::Notifier.config[:notify_error_codes].include?(status_cd)
  return ExceptionNotification::Notifier.config[:notify_other_errors]
end
should_web_hook_on_exception?(exception, status_cd = nil, verbose = false) click to toggle source
# File lib/exception_notification/notifiable_helper.rb, line 60
def should_web_hook_on_exception?(exception, status_cd = nil, verbose = false)
  environment_is_noisy? && notification_level_sends_web_hooks? && !ExceptionNotification::Notifier.config[:web_hooks].blank? && should_notify_on_exception?(exception, status_cd, verbose)
end
verbose_output(exception, status_cd, file_path, send_email, send_web_hooks, request = nil, the_blamed = nil, rejected_sections = nil) click to toggle source
# File lib/exception_notification/notifiable_helper.rb, line 29
def verbose_output(exception, status_cd, file_path, send_email, send_web_hooks, request = nil, the_blamed = nil, rejected_sections = nil)
  puts("[EXCEPTION] #{exception}")
  puts("[EXCEPTION CLASS] #{exception.class}")
  puts("[EXCEPTION STATUS_CD] #{status_cd}")
  puts("[ERROR LAYOUT] #{self.class.error_layout}") if self.class.respond_to?(:error_layout)
  puts("[ERROR VIEW PATH] #{ExceptionNotification::Notifier.config[:view_path]}") if !ExceptionNotification::Notifier.nil? && !ExceptionNotification::Notifier.config[:view_path].nil?
  puts("[ERROR FILE PATH] #{file_path.inspect}")
  puts("[ERROR EMAIL] #{send_email ? "YES" : "NO"}")
  puts("[ERROR WEB HOOKS] #{send_web_hooks ? "YES" : "NO"}")
  puts("[THE BLAMED] #{the_blamed}") unless the_blamed.blank?
  puts("[SECTIONS] #{ExceptionNotification::Notifier.sections_for_email(rejected_sections, request).inspect}")
  req = request ? " for request_uri=#{request.request_uri}" : ""
  logger.error("render_error(#{status_cd}, #{self.class.http_status_codes[status_cd]}) invoked#{req}") if self.class.respond_to?(:http_status_codes)
end