module Sinatra::Instrumentation

Constants

VERSION

Public Class Methods

patch_render() click to toggle source
# File lib/sinatra/instrumentation.rb, line 19
def patch_render
  ::Sinatra::Base.module_eval do
    alias_method :render_original, :render

    def render(engine, data, options = {}, locals = {}, &block)
      result = ""

      OpenTracing.global_tracer.start_active_span("sinatra.render", tags: {}) do |scope|
        result = render_original(engine, data, options, locals, &block)
        scope.span.set_tag("sinatra.template", data)
      end

      result
    end
  end
end
registered(app) click to toggle source
# File lib/sinatra/instrumentation.rb, line 11
def registered(app)
  # enable the Rack Tracer middleware
  app.use Rack::Tracer

  patch_render if !@patched
  @patched = true
end
render(engine, data, options = {}, locals = {}, &block) click to toggle source
# File lib/sinatra/instrumentation.rb, line 23
def render(engine, data, options = {}, locals = {}, &block)
  result = ""

  OpenTracing.global_tracer.start_active_span("sinatra.render", tags: {}) do |scope|
    result = render_original(engine, data, options, locals, &block)
    scope.span.set_tag("sinatra.template", data)
  end

  result
end