module Sentry::Rails::ControllerTransaction

def self.included(base)

def self.included(base)
  base.prepend_around_action(:sentry_around_action)
end

def sentry_around_action

def sentry_around_action
  if Sentry.initialized?
    transaction_name = "#{self.class}##{action_name}"
    Sentry.get_current_scope.set_transaction_name(transaction_name, source: :view)
    Sentry.with_child_span(op: "view.process_action.action_controller", description: transaction_name) do |child_span|
      if child_span
        begin
          result = yield
        ensure
          child_span.set_http_status(response.status)
          child_span.set_data(:format, request.format)
          child_span.set_data(:method, request.method)
          child_span.set_data(:path, request.path)
          child_span.set_data(:params, request.params)
        end
        result
      else
        yield
      end
    end
  else
    yield
  end
end