Sha256: 4b2182ed3aba49d7a1f1b473bbb2db2509910a331ca102a775a6030a43c1fe6a

Contents?: true

Size: 1.05 KB

Versions: 7

Compression:

Stored size: 1.05 KB

Contents

module Appsignal
  class Hooks
    class RakeHook < Appsignal::Hooks::Hook
      register :rake

      def dependencies_present?
        defined?(::Rake::Task)
      end

      def install
        ::Rake::Task.class_eval do
          alias :invoke_without_appsignal :invoke

          def invoke(*args)
            if Appsignal.active?
              invoke_with_appsignal(*args)
            else
              invoke_without_appsignal(*args)
            end
          end

          def invoke_with_appsignal(*args)
            invoke_without_appsignal(*args)
          rescue => error
            transaction = Appsignal::Transaction.create(
              SecureRandom.uuid,
              Appsignal::Transaction::BACKGROUND_JOB,
              Appsignal::Transaction::GenericRequest.new(
                :params => args
              )
            )
            transaction.set_action(name)
            transaction.set_error(error)
            transaction.complete!
            Appsignal.stop
            raise error
          end
        end
      end
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
appsignal-0.12.rc.14 lib/appsignal/hooks/rake.rb
appsignal-0.12.rc.13 lib/appsignal/hooks/rake.rb
appsignal-0.12.rc.12 lib/appsignal/hooks/rake.rb
appsignal-0.12.rc.11 lib/appsignal/hooks/rake.rb
appsignal-0.12.rc.10 lib/appsignal/hooks/rake.rb
appsignal-0.12.rc.9 lib/appsignal/hooks/rake.rb
appsignal-0.12.rc.8 lib/appsignal/hooks/rake.rb