class Atatus::Spies::SinatraSpy

@api private

Public Instance Methods

compile_template(engine, data, opts, *args, &block) click to toggle source
# File lib/atatus/spies/sinatra.rb, line 44
def compile_template(engine, data, opts, *args, &block)
  opts[:__atatus_template_name] =
    case data
    when Symbol then data.to_s
    else format('Inline %s', engine)
    end

  compile_template_without_apm(engine, data, opts, *args, &block)
end
dispatch!(*args, &block) click to toggle source
# File lib/atatus/spies/sinatra.rb, line 35
def dispatch!(*args, &block)
  dispatch_without_apm!(*args, &block).tap do
    next unless (transaction = Atatus.current_transaction)
    next unless (route = env['sinatra.route'])

    transaction.name = route
  end
end
install() click to toggle source
# File lib/atatus/spies/sinatra.rb, line 25
def install
  if defined?(::Sinatra) &&
      defined?(::Sinatra::Base) &&
      ::Sinatra::Base.private_method_defined?(:dispatch!) &&
      ::Sinatra::Base.private_method_defined?(:compile_template)

    ::Sinatra::Base.class_eval do
      alias dispatch_without_apm! dispatch!
      alias compile_template_without_apm compile_template

      def dispatch!(*args, &block)
        dispatch_without_apm!(*args, &block).tap do
          next unless (transaction = Atatus.current_transaction)
          next unless (route = env['sinatra.route'])

          transaction.name = route
        end
      end

      def compile_template(engine, data, opts, *args, &block)
        opts[:__atatus_template_name] =
          case data
          when Symbol then data.to_s
          else format('Inline %s', engine)
          end

        compile_template_without_apm(engine, data, opts, *args, &block)
      end
    end

  end
end