Sha256: 4f147542a56b824601650dfcf8025e541204ee48de6d6ce3a507b61583e99ce8

Contents?: true

Size: 1.41 KB

Versions: 7

Compression:

Stored size: 1.41 KB

Contents

# Rails 3/4
module ScoutRails::Instruments
  module ActionControllerInstruments
    # Instruments the action and tracks errors.
    def process_action(*args)
      scout_controller_action = "Controller/#{controller_path}/#{action_name}"
      #ScoutRails::Agent.instance.logger.debug "Processing #{scout_controller_action}"
      self.class.trace(scout_controller_action, :uri => request.fullpath) do
        begin
          super
        rescue Exception => e
          ScoutRails::Agent.instance.store.track!("Errors/Request",1, :scope => nil)
          raise
        ensure
          Thread::current[:scout_scope_name] = nil
        end
      end
    end
  end
end

# ActionController::Base is a subclass of ActionController::Metal, so this instruments both
# standard Rails requests + Metal.
if defined?(ActionController) && defined?(ActionController::Metal)
  ScoutRails::Agent.instance.logger.debug "Instrumenting ActionController::Metal"
  ActionController::Metal.class_eval do
    include ScoutRails::Tracer
    include ::ScoutRails::Instruments::ActionControllerInstruments
  end
end

if defined?(ActionView) && defined?(ActionView::PartialRenderer)
  ScoutRails::Agent.instance.logger.debug "Instrumenting ActionView::PartialRenderer"
  ActionView::PartialRenderer.class_eval do
    include ScoutRails::Tracer
    instrument_method :render_partial, :metric_name => 'View/#{@template.virtual_path}/Rendering', :scope => true
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
scout_rails-1.1.5.pre6 lib/scout_rails/instruments/rails3_or_4/action_controller_instruments.rb
scout_rails-1.1.5.pre5 lib/scout_rails/instruments/rails3_or_4/action_controller_instruments.rb
scout_rails-1.1.5.pre4 lib/scout_rails/instruments/rails3_or_4/action_controller_instruments.rb
scout_rails-1.1.5.pre3 lib/scout_rails/instruments/rails3_or_4/action_controller_instruments.rb
scout_rails-1.1.5.pre lib/scout_rails/instruments/rails3_or_4/action_controller_instruments.rb
scout_rails-1.1.4.pre lib/scout_rails/instruments/rails3_or_4/action_controller_instruments.rb
scout_rails-1.1.3 lib/scout_rails/instruments/rails3_or_4/action_controller_instruments.rb