module Rake
  class Application
    alias_method :orig_display_error_message, :display_error_message

    def display_error_message(exception)
      begin
        location = "rake #{top_level_tasks.join(' ')}"

        Nadir.notify exception, location: location
        Nadir::Transport::HTTPAsync.shut_down
      rescue => e
        Nadir.logger.error "[Nadir] Internal error: #{e.inspect}"
      end

      orig_display_error_message exception
    end
  end
end