Sha256: ba4fbe80dd5f1b4e69c2fcbb6d1cd684ce18e09592f448e9a5dc7b18327eaf55

Contents?: true

Size: 1.86 KB

Versions: 16

Compression:

Stored size: 1.86 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)
      Honeybadger.notify(ex, origin: :rake, component: reconstruct_command_line)
      display_error_message_without_honeybadger(ex)
    ensure
      Honeybadger.context.clear!
    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

16 entries across 16 versions & 1 rubygems

Version Path
honeybadger-2.7.2 lib/honeybadger/init/rake.rb
honeybadger-2.7.1 lib/honeybadger/init/rake.rb
honeybadger-2.7.0 lib/honeybadger/init/rake.rb
honeybadger-2.6.1 lib/honeybadger/init/rake.rb
honeybadger-2.6.0 lib/honeybadger/init/rake.rb
honeybadger-2.5.3 lib/honeybadger/init/rake.rb
honeybadger-2.5.2 lib/honeybadger/init/rake.rb
honeybadger-2.5.1 lib/honeybadger/init/rake.rb
honeybadger-2.5.0 lib/honeybadger/init/rake.rb
honeybadger-2.4.1 lib/honeybadger/init/rake.rb
honeybadger-2.4.0 lib/honeybadger/init/rake.rb
honeybadger-2.3.3 lib/honeybadger/init/rake.rb
honeybadger-2.3.2 lib/honeybadger/init/rake.rb
honeybadger-2.3.2.beta.1 lib/honeybadger/init/rake.rb
honeybadger-2.3.1 lib/honeybadger/init/rake.rb
honeybadger-2.3.0 lib/honeybadger/init/rake.rb