class Chef::Handler::SlowReport
Attributes
Public Class Methods
Source
# File lib/chef/handler/slow_report.rb, line 26 def initialize(amount) @amount = Integer(amount) rescue nil @amount ||= 10 end
Public Instance Methods
Source
# File lib/chef/handler/slow_report.rb, line 51 def all_records @all_records ||= action_collection&.filtered_collection(unprocessed: false) || [] end
Source
# File lib/chef/handler/slow_report.rb, line 55 def count num = all_resources.count num > amount ? amount : num end
Source
# File lib/chef/handler/slow_report.rb, line 31 def report if count == 0 puts "\nNo resources to profile\n\n" return end top = all_records.sort_by(&:elapsed_time).last(amount).reverse data = top.map { |r| [ r.new_resource.to_s, r.elapsed_time, r.action, r.new_resource.cookbook_name, r.new_resource.recipe_name, stripped_source_line(r.new_resource) ] } puts "\nTop #{count} slowest #{count == 1 ? "resource" : "resources"}:\n\n" table = TTY::Table.new(%w{resource elapsed_time action cookbook recipe source}, data) rendered = table.render do |renderer| renderer.border do mid "-" mid_mid " " end end puts rendered puts "\n" end
Source
# File lib/chef/handler/slow_report.rb, line 60 def stripped_source_line(resource) # strip the leading path off of the source line resource.source_line&.gsub(%r{.*/cookbooks/}, "")&.gsub(%r{.*/chef-[0-9\.]+/}, "") end