class Racknga::Middleware::ExceptionNotifier

This is a middleware that mails exception details on error. It’s useful for finding your Rack application troubles.

Usage:

require "racknga"

notifier_options = {
  :subject_label => "[YourApplication]",
  :from => "reporter@example.com",
  :to => "maintainers@example.com",
}
notifiers = [Racknga::ExceptionMailNotifier.new(notifier_options)]
use Racknga::Middleware::ExceptionNotifier, :notifiers => notifiers
run YourApplication

Public Class Methods

new(application, options={}) click to toggle source
# File lib/racknga/middleware/exception_notifier.rb, line 38
def initialize(application, options={})
  @application = application
  @options = Utils.normalize_options(options || {})
  @notifiers = @options[:notifiers] || []
end

Public Instance Methods

call(environment) click to toggle source

For Rack.

# File lib/racknga/middleware/exception_notifier.rb, line 45
def call(environment)
  @application.call(environment)
rescue Exception => exception
  @notifiers.each do |notifier|
    begin
      notifier.notify(exception, environment)
    rescue Exception
      begin
        $stderr.puts("#{$!.class}: #{$!.message}")
        $stderr.puts($@)
        $stderr.puts("-" * 10)
        $stderr.puts("#{exception.class}: #{exception.message}")
        $stderr.puts(exception.backtrace)
      rescue Exception
      end
    end
  end
  raise
end