module PigCI

Constants

VERSION

Attributes

commit_sha1[W]
during_setup_eager_load_application[W]
during_setup_make_blank_application_request[W]
during_setup_precompile_assets[W]
enabled[W]
generate_html_summary[RW]
generate_terminal_summary[RW]
head_branch[W]
historical_data_run_limit[W]
ignore_cached_queries[W]

Rails caches repeated queries within the same request. You can not count any cached queries if you'd like.

locale[W]
max_change_percentage_precision[W]
output_directory[W]
pid[RW]
profiler_engine[W]
report_memory_precision[W]
report_row_sort_by[W]

PigCI.report_row_sort_by = Proc.new { |d| d * -1 }

run_timestamp[W]
terminal_report_row_limit[W]
tmp_directory[W]

Public Instance Methods

api_key=(value) click to toggle source

Throw deprecation notice for setting API

# File lib/pig_ci.rb, line 114
def api_key=(value)
  puts "DEPRECATED: PigCI.com API has been retired, you no longer need to set config.api_key in your spec/rails_helper.rb file."
end
commit_sha1() click to toggle source
# File lib/pig_ci.rb, line 104
def commit_sha1
  @commit_sha1 || ENV["CI_COMMIT_ID"] || ENV["CIRCLE_SHA1"] || ENV["TRAVIS_COMMIT"] || `git rev-parse HEAD`.strip
end
during_setup_eager_load_application?() click to toggle source
# File lib/pig_ci.rb, line 63
def during_setup_eager_load_application?
  @during_setup_eager_load_application.nil? || @during_setup_eager_load_application
end
during_setup_make_blank_application_request?() click to toggle source
# File lib/pig_ci.rb, line 68
def during_setup_make_blank_application_request?
  @during_setup_make_blank_application_request.nil? || @during_setup_make_blank_application_request
end
during_setup_precompile_assets?() click to toggle source
# File lib/pig_ci.rb, line 73
def during_setup_precompile_assets?
  @during_setup_precompile_assets.nil? || @during_setup_precompile_assets
end
enabled?() click to toggle source
# File lib/pig_ci.rb, line 21
def enabled?
  @enabled.nil? ? true : @enabled
end
generate_html_summary?() click to toggle source
# File lib/pig_ci.rb, line 48
def generate_html_summary?
  @generate_html_summary.nil? || @generate_html_summary
end
generate_terminal_summary?() click to toggle source
# File lib/pig_ci.rb, line 43
def generate_terminal_summary?
  @generate_terminal_summary.nil? || @generate_terminal_summary
end
head_branch() click to toggle source
# File lib/pig_ci.rb, line 109
def head_branch
  @head_branch || ENV["CI_BRANCH"] || ENV["CIRCLE_BRANCH"] || ENV["TRAVIS_BRANCH"] || `git rev-parse --abbrev-ref HEAD`.strip
end
historical_data_run_limit() click to toggle source
# File lib/pig_ci.rb, line 89
def historical_data_run_limit
  @historical_data_run_limit ||= 10
end
ignore_cached_queries?() click to toggle source
# File lib/pig_ci.rb, line 28
def ignore_cached_queries?
  @ignore_cached_queries.nil? ? false : @ignore_cached_queries
end
load_i18ns!() click to toggle source
# File lib/pig_ci.rb, line 150
def load_i18ns!
  I18n.available_locales << PigCI.locale
  I18n.load_path += Dir["#{File.expand_path("../config/locales/pig_ci", __dir__)}/*.{rb,yml}"]
end
locale() click to toggle source
# File lib/pig_ci.rb, line 119
def locale
  @locale || :en
end
max_change_percentage_precision() click to toggle source
# File lib/pig_ci.rb, line 53
def max_change_percentage_precision
  @max_change_percentage_precision || 1
end
output_directory() click to toggle source
# File lib/pig_ci.rb, line 38
def output_directory
  @output_directory || Pathname.new(Dir.getwd).join("pig-ci")
end
profiler_engine() click to toggle source
# File lib/pig_ci.rb, line 99
def profiler_engine
  @profiler_engine ||= PigCI::ProfilerEngine::Rails.new
end
report_memory_precision() click to toggle source
# File lib/pig_ci.rb, line 58
def report_memory_precision
  @report_memory_precision || 2
end
report_row_sort_by(data) click to toggle source
# File lib/pig_ci.rb, line 84
def report_row_sort_by(data)
  (@report_row_sort_by || proc { |d| d[:max].to_i * -1 }).call(data)
end
run_exit_tasks!() click to toggle source
# File lib/pig_ci.rb, line 155
def run_exit_tasks!
  return if PigCI.pid != Process.pid || !PigCI.profiler_engine.request_captured?

  # Save all the reports as JSON
  profiler_engine.profilers.each(&:save!)

  # Print the report summary to Terminal
  PigCI::Summary::Terminal.new(reports: profiler_engine.reports).print! if PigCI.generate_terminal_summary?

  # Save the report summary to the project root.
  PigCI::Summary::HTML.new(reports: profiler_engine.reports).save! if PigCI.generate_html_summary?

  # Make sure CI fails when metrics are over thresholds.
  PigCI::Summary::CI.new(reports: profiler_engine.reports).call!
end
run_timestamp() click to toggle source
# File lib/pig_ci.rb, line 94
def run_timestamp
  @run_timestamp ||= Time.now.to_i.to_s
end
start(&block) click to toggle source
# File lib/pig_ci.rb, line 133
def start(&block)
  self.pid = Process.pid
  PigCI::TestFrameworks::Rspec.configure! if defined?(::RSpec)

  block&.call(self)

  # Add our translations
  load_i18ns!

  # Make sure our directories exist
  Dir.mkdir(tmp_directory) unless File.exist?(tmp_directory)
  Dir.mkdir(output_directory) unless File.exist?(output_directory)

  # Purge any previous logs and attach some listeners
  profiler_engine.setup!
end
terminal_report_row_limit() click to toggle source
# File lib/pig_ci.rb, line 78
def terminal_report_row_limit
  @terminal_report_row_limit || -1
end
thresholds() click to toggle source
# File lib/pig_ci.rb, line 127
def thresholds
  @thresholds ||= PigCI::Configuration::Thresholds.new
end
thresholds=(values) click to toggle source
# File lib/pig_ci.rb, line 123
def thresholds=(values)
  @thresholds = PigCI::Configuration::Thresholds.new(values)
end
tmp_directory() click to toggle source
# File lib/pig_ci.rb, line 33
def tmp_directory
  @tmp_directory || Pathname.new(Dir.getwd).join("tmp", "pig-ci")
end