module ScoutApm::AutoInstrument::Rails
Constants
- CONTROLLER_FILE
A general pattern to match
Rails
controller files:- GEM_FILE
Some gems (Devise) provide controllers that match
CONTROLLER_FILE
pattern. Try a simple match to see if it's a Gemfile
Public Class Methods
controller_path?(path)
click to toggle source
Whether the given path is likely to be a Rails
controller and not provided by a Gem.
# File lib/scout_apm/auto_instrument/rails.rb, line 16 def self.controller_path? path CONTROLLER_FILE.match(path) && !GEM_FILE.match(path) end
ignore?(path)
click to toggle source
Autoinstruments increases overhead when applied to many code expressions that perform little work. You can exclude files from autoinstruments via the `auto_instruments_ignore` option.
# File lib/scout_apm/auto_instrument/rails.rb, line 22 def self.ignore?(path) res = false ScoutApm::Agent.instance.context.config.value('auto_instruments_ignore').each do |ignored_file_name| if path.include?(ignored_file_name) res = true break end end res end
rewrite(path, code = nil)
click to toggle source
# File lib/scout_apm/auto_instrument/rails.rb, line 33 def self.rewrite(path, code = nil) code ||= File.read(path) ast = ::Parser::CurrentRuby.parse(code) # pp ast buffer = ::Parser::Source::Buffer.new(path) buffer.source = code rewriter = Rewriter.new # Rewrite the AST, returns a String with the new form. rewriter.rewrite(buffer, ast) end