Sha256: 85fd4a3cd577b84dc71884a1a1930bf4250166d0d905e1b360a29b14b8034c79

Contents?: true

Size: 1.9 KB

Versions: 34

Compression:

Stored size: 1.9 KB

Contents

# Patch Rake::Application to handle errors with Honeybadger
module Honeybadger
  module RakeHandler
    def self.included(klass)
      klass.class_eval do
        include Rake087Methods unless defined?(Rake::VERSION) && Rake::VERSION >= '0.9.0'
        alias_method :display_error_message_without_honeybadger, :display_error_message
        alias_method :display_error_message, :display_error_message_with_honeybadger
      end
    end

    def display_error_message_with_honeybadger(ex)
      if !self.tty_output?
        Honeybadger.notify_or_ignore(ex, origin: :rake, component: reconstruct_command_line)
        Honeybadger.context.clear!
      end

      display_error_message_without_honeybadger(ex)
    end

    def reconstruct_command_line
      "rake #{ARGV.join( ' ' )}"
    end

    # This module brings Rake 0.8.7 error handling to 0.9.0 standards
    module Rake087Methods
      # Method taken from Rake 0.9.0 source
      #
      # Provide standard exception handling for the given block.
      def standard_exception_handling
        begin
          yield
        rescue SystemExit => ex
          # Exit silently with current status
          raise
        rescue OptionParser::InvalidOption => ex
          $stderr.puts ex.message
          exit(false)
        rescue Exception => ex
          # Exit with error message
          display_error_message(ex)
          exit(false)
        end
      end

      # Method extracted from Rake 0.8.7 source
      def display_error_message(ex)
        $stderr.puts "#{name} aborted!"
        $stderr.puts ex.message
        if options.trace
          $stderr.puts ex.backtrace.join("\n")
        else
          $stderr.puts ex.backtrace.find {|str| str =~ /#{@rakefile}/ } || ""
          $stderr.puts "(See full trace by running task with --trace)"
        end
      end
    end
  end
end

Rake.application.instance_eval do
  class << self
    include Honeybadger::RakeHandler
  end
end

Version data entries

34 entries across 34 versions & 2 rubygems

Version Path
honeybadger-2.2.0 lib/honeybadger/init/rake.rb
honeybadger-2.2.0.beta.1 lib/honeybadger/init/rake.rb
honeybadger-2.1.6.beta.1 lib/honeybadger/init/rake.rb
honeybadger-2.1.5 lib/honeybadger/init/rake.rb
honeybadger-2.1.4 lib/honeybadger/init/rake.rb
honeybadger-2.1.3 lib/honeybadger/init/rake.rb
honeybadger-2.1.1 lib/honeybadger/init/rake.rb
honeybadger-mubi-2.1.1 lib/honeybadger/init/rake.rb
honeybadger-2.1.0 lib/honeybadger/init/rake.rb
honeybadger-2.1.0.beta.1 lib/honeybadger/init/rake.rb
honeybadger-2.0.12 lib/honeybadger/init/rake.rb
honeybadger-2.0.11 lib/honeybadger/init/rake.rb
honeybadger-2.0.10 lib/honeybadger/init/rake.rb
honeybadger-2.0.9 lib/honeybadger/init/rake.rb
honeybadger-2.0.8 lib/honeybadger/init/rake.rb
honeybadger-2.0.6 lib/honeybadger/init/rake.rb
honeybadger-2.0.5 lib/honeybadger/init/rake.rb
honeybadger-2.0.4 lib/honeybadger/init/rake.rb
honeybadger-2.0.3 lib/honeybadger/init/rake.rb
honeybadger-2.0.2 lib/honeybadger/init/rake.rb