class StackifyRubyAPM::Spies::SinatraSpy

@api private

Public Instance Methods

compile_template(engine, data, opts, *args, &block) click to toggle source

Tilt engine template

# File lib/stackify_apm/spies/sinatra.rb, line 28
def compile_template(engine, data, opts, *args, &block)
  opts[:__stackify_apm_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

Sets transaction name from Sinatra env's route name

# File lib/stackify_apm/spies/sinatra.rb, line 17
def dispatch!(*args, &block)
  dispatch_without_apm!(*args, &block).tap do
    next unless (transaction = StackifyRubyAPM.current_transaction)
    next unless (route = env['sinatra.route'])

    transaction.name = route
  end
end
install() click to toggle source
# File lib/stackify_apm/spies/sinatra.rb, line 10
def install
  ::Sinatra::Base.class_eval do
    alias_method 'dispatch_without_apm!', 'dispatch!'
    alias_method 'compile_template_without_apm', 'compile_template'

    # Sets transaction name from Sinatra env's route name
    #
    def dispatch!(*args, &block)
      dispatch_without_apm!(*args, &block).tap do
        next unless (transaction = StackifyRubyAPM.current_transaction)
        next unless (route = env['sinatra.route'])

        transaction.name = route
      end
    end

    # Tilt engine template
    #
    def compile_template(engine, data, opts, *args, &block)
      opts[:__stackify_apm_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