Class: TestProf::RubyProf::Configuration

Inherits:
Object
  • Object
show all
Defined in:
lib/test_prof/ruby_prof.rb

Overview

RubyProf configuration

Constant Summary collapse

ELIMINATE_METHODS =

Default list of methods to exclude from profile. Contains a lot of RSpec stuff.

[
  /instance_exec/,
  /ExampleGroup>?#run/,
  /Procsy/,
  /AroundHook#execute_with/,
  /HookCollections/,
  /Array#(map|each)/
].freeze
PRINTERS =
{
  'flat' => 'FlatPrinter',
  'flat_wln' => 'FlatPrinterWithLineNumbers',
  'graph' => 'GraphPrinter',
  'graph_html' => 'GraphHtmlPrinter',
  'dot' => 'DotPrinter',
  '.' => 'DotPrinter',
  'call_stack' => 'CallStackPrinter',
  'call_tree' => 'CallTreePrinter',
  'multi' => 'MultiPrinter'
}.freeze
PRINTER_EXTENSTION =

Mapping from printer to report file extension NOTE: txt is not included and considered default

{
  'graph_html' => 'html',
  'dot' => 'dot',
  '.' => 'dot',
  'call_stack' => 'html'
}.freeze
LOGFILE_PREFIX =
"ruby-prof-report".freeze

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeConfiguration

Returns a new instance of Configuration.



64
65
66
67
68
69
70
71
# File 'lib/test_prof/ruby_prof.rb', line 64

def initialize
  @printer = ENV['TEST_RUBY_PROF'].to_sym if PRINTERS.key?(ENV['TEST_RUBY_PROF'])
  @printer ||= ENV.fetch('TEST_RUBY_PROF_PRINTER', :flat).to_sym
  @mode = ENV.fetch('TEST_RUBY_PROF_MODE', :wall).to_sym
  @min_percent = 1
  @include_threads = false
  @eliminate_methods = ELIMINATE_METHODS
end

Instance Attribute Details

#eliminate_methodsObject

Returns the value of attribute eliminate_methods.



61
62
63
# File 'lib/test_prof/ruby_prof.rb', line 61

def eliminate_methods
  @eliminate_methods
end

#include_threadsObject

Returns the value of attribute include_threads.



61
62
63
# File 'lib/test_prof/ruby_prof.rb', line 61

def include_threads
  @include_threads
end

#min_percentObject

Returns the value of attribute min_percent.



61
62
63
# File 'lib/test_prof/ruby_prof.rb', line 61

def min_percent
  @min_percent
end

#modeObject

Returns the value of attribute mode.



61
62
63
# File 'lib/test_prof/ruby_prof.rb', line 61

def mode
  @mode
end

#printerObject

Returns the value of attribute printer.



61
62
63
# File 'lib/test_prof/ruby_prof.rb', line 61

def printer
  @printer
end

Instance Method Details

#eliminate_methods?Boolean

Returns:

  • (Boolean)


77
78
79
80
# File 'lib/test_prof/ruby_prof.rb', line 77

def eliminate_methods?
  !eliminate_methods.nil? &&
    !eliminate_methods.empty?
end

#include_threads?Boolean

Returns:

  • (Boolean)


73
74
75
# File 'lib/test_prof/ruby_prof.rb', line 73

def include_threads?
  include_threads == true
end

#resolve_printerObject

Returns an array of printer type (ID) and class.

Raises:

  • (ArgumentError)


83
84
85
86
87
88
89
90
91
92
# File 'lib/test_prof/ruby_prof.rb', line 83

def resolve_printer
  return ['custom', printer] if printer.is_a?(Module)

  type = printer.to_s

  raise ArgumentError, "Unknown printer: #{type}" unless
    PRINTERS.key?(type)

  [type, ::RubyProf.const_get(PRINTERS[type])]
end