Sha256: 41cbcf6f9673642a946c61738f3208cb28cb118f6499b3465c7332270e68d259

Contents?: true

Size: 1.31 KB

Versions: 2

Compression:

Stored size: 1.31 KB

Contents

module ScoutRailsProxy::Instruments
  module SinatraInstruments
    def route_eval_with_scout_instruments(&blockarg)
      path = unescape(@request.path_info)
      name = path
      # Go through each route and look for a match
      if routes = self.class.routes[@request.request_method]
        routes.detect do |pattern, keys, conditions, block|
          if blockarg.equal? block
            name = pattern.source
          end
        end
      end
      name.gsub!(%r{^[/^]*(.*?)[/\$\?]*$}, '\1')
      name = 'root' if name.empty?
      name = @request.request_method + ' ' + name if @request && @request.respond_to?(:request_method)      
      scout_controller_action = "Controller/Sinatra/#{name}"
      self.class.trace(scout_controller_action, :uri => @request.path_info) do
        route_eval_without_scout_instruments(&blockarg)    
      end
    end # route_eval_with_scout_instrumentss
  end # SinatraInstruments
end # ScoutRailsProxy::Instruments

if defined?(::Sinatra) && defined?(::Sinatra::Base)
  ScoutRailsProxy::Agent.instance.logger.debug "Instrumenting Sinatra"
  ::Sinatra::Base.class_eval do
    include ScoutRailsProxy::Tracer
    include ::ScoutRailsProxy::Instruments::SinatraInstruments
    alias route_eval_without_scout_instruments route_eval
    alias route_eval route_eval_with_scout_instruments
  end
end

Version data entries

2 entries across 2 versions & 2 rubygems

Version Path
scout_rails_proxy-1.0.6 lib/scout_rails_proxy/instruments/sinatra_instruments.rb
scout_rails_proxy_proxy-1.0.5 lib/scout_rails_proxy/instruments/sinatra_instruments.rb