pboling/require_bench

View on GitHub
lib/require_bench/tasks.rb

Summary

Maintainability
A
0 mins
Test Coverage
# frozen_string_literal: true

# NOTE: Gem is only active if REQUIRE_BENCH=true is set in shell

# require 'require_bench/tasks'
# will give you the require_bench tasks.
#  Do it as early as possible during bootstrapping!
require "require_bench"

namespace :require_bench do
  desc "Print timings while booting app, determine slowest loading files"
  task hello: :environment do
    tot = 0.0
    vals = RequireBench::TIMINGS.to_a
    vals.sort_by! { |a| a[1] }.reverse!
    if !vals.empty?
      puts "\n[RequireBench] Slowest Loads by Library, in order"
      vals.each_with_index do |a, index|
        tot += a[1]
        printf("%2d. %10f %s\n", index + 1, a[1], a[0])
      end
      puts "=========="
      printf("%10f %s\n", tot, "TOTAL")
    else
      puts %(
require_bench did not track any requires, because it was required too late, of the configuration excluded everything.
Require in Rakefile, as follows
  require 'bundler/setup' # or for Rails - require_relative 'config/application'
  require 'require_bench/tasks'
Check ENV variable values for:
    REQUIRE_BENCH_SKIP_PATTERN
    REQUIRE_BENCH_INCLUDE_PATTERN
    REQUIRE_BENCH_NO_GROUP_PATTERN
Then run rake require_bench:hello again!
)
    end
  end
end