Sha256: d03af09a6d9eb3b76cf70d4ff5a5fe15265931448121f2924e00f18bbdc36612

Contents?: true

Size: 1.17 KB

Versions: 13

Compression:

Stored size: 1.17 KB

Contents

Rake::TaskManager.record_task_metadata = true

module Bugsnag::Rake
  def self.included(base)
    base.extend ClassMethods
    base.class_eval do
      class << self
        alias_method :original_define_task, :define_task
        alias_method :define_task, :bugsnag_define_task
      end
    end

    Bugsnag.before_notify_callbacks << lambda {|notif|
      task = Thread.current[:bugsnag_running_task]
      next unless task

      notif.add_tab(:rake_task, {
        :name => task.name,
        :description => task.full_comment,
        :arguments => task.arg_description
      })

      notif.context ||= task.name
    }
  end

  module ClassMethods
    def bugsnag_define_task(*args, &block)
      task = self.original_define_task(*args) do |*block_args|
        begin
          old_task = Thread.current[:bugsnag_running_task]
          Thread.current[:bugsnag_running_task] = task

          yield(*block_args) if block_given?
        rescue Exception => e
          Bugsnag.auto_notify(e)
          raise
        ensure
          Thread.current[:bugsnag_running_task] = old_task
        end
      end
    end
  end
end

Rake::Task.send(:include, Bugsnag::Rake) if defined?(Rake::Task)

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
bugsnag-2.5.1 lib/bugsnag/rake.rb
bugsnag-2.5.0 lib/bugsnag/rake.rb
bugsnag-2.4.1 lib/bugsnag/rake.rb
bugsnag-2.4.0 lib/bugsnag/rake.rb
bugsnag-2.3.0 lib/bugsnag/rake.rb
bugsnag-2.2.2 lib/bugsnag/rake.rb
bugsnag-2.2.1 lib/bugsnag/rake.rb
bugsnag-2.2.0 lib/bugsnag/rake.rb
bugsnag-2.1.0 lib/bugsnag/rake.rb
bugsnag-2.0.3 lib/bugsnag/rake.rb
bugsnag-2.0.2 lib/bugsnag/rake.rb
bugsnag-2.0.1 lib/bugsnag/rake.rb
bugsnag-2.0.0 lib/bugsnag/rake.rb