appsignal/appsignal

View on GitHub
lib/appsignal/integrations/webmachine.rb

Summary

Maintainability
A
0 mins
Test Coverage
# frozen_string_literal: true

module Appsignal
  module Integrations
    # @api private
    module WebmachinePlugin
      module FSM
        def run_with_appsignal
          transaction = Appsignal::Transaction.create(
            SecureRandom.uuid,
            Appsignal::Transaction::HTTP_REQUEST,
            request,
            :params_method => :query
          )

          transaction.set_action_if_nil("#{resource.class.name}##{request.method}")

          Appsignal.instrument("process_action.webmachine") do
            run_without_appsignal
          end

          Appsignal::Transaction.complete_current!
        end

        private

        def handle_exceptions_with_appsignal
          handle_exceptions_without_appsignal do
            begin
              yield
            rescue Exception => e # rubocop:disable Lint/RescueException
              Appsignal.set_error(e)
              raise e
            end
          end
        end
      end
    end
  end
end