class MinitestRollbar::RollbarReporter
Attributes
use_default_grouping[RW]
Public Class Methods
new(options = {})
click to toggle source
Calls superclass method
# File lib/minitest_rollbar/rollbar_reporter.rb, line 7 def initialize(options = {}) @rollbar_config = options.delete(:rollbar_config) || {} raise StandardError.new('Must set rollbar access token') if @rollbar_config[:access_token].nil? super(options) @sequential_exception_count = 0 @use_default_grouping = false @previous_exception_inspect_result = nil @previous_exception = nil # Rollbar global setting, notifier instance won't report if this is not set Rollbar.configuration.enabled = true end
Public Instance Methods
record(result)
click to toggle source
Calls superclass method
# File lib/minitest_rollbar/rollbar_reporter.rb, line 23 def record(result) super if result.error? current_exception = result.failure.exception if @previous_exception_inspect_result.nil? record_new_error(current_exception) elsif current_exception.inspect == @previous_exception_inspect_result increment_error_counting else # New exception report_error_to_rollbar(notifier) record_new_error current_exception end else unless @previous_exception.nil? report_error_to_rollbar(notifier) reset_error_counting end end end
report()
click to toggle source
Calls superclass method
# File lib/minitest_rollbar/rollbar_reporter.rb, line 44 def report super if @sequential_exception_count.positive? report_error_to_rollbar(notifier) reset_error_counting end end
Private Instance Methods
build_config_name()
click to toggle source
# File lib/minitest_rollbar/rollbar_reporter.rb, line 58 def build_config_name ENV['CIRCLE_JOB'] end
git_commit_hash()
click to toggle source
# File lib/minitest_rollbar/rollbar_reporter.rb, line 54 def git_commit_hash ENV['CIRCLE_SHA1'] end
increment_error_counting()
click to toggle source
# File lib/minitest_rollbar/rollbar_reporter.rb, line 91 def increment_error_counting @sequential_exception_count += 1 end
notifier()
click to toggle source
# File lib/minitest_rollbar/rollbar_reporter.rb, line 62 def notifier scope.merge!(fingerprint: @previous_exception_inspect_result) unless @use_default_grouping rollbar_notifier = Rollbar.scope(scope) @rollbar_config.each { |key, value| rollbar_notifier.configuration.send("#{key}=", value) } rollbar_notifier end
record_new_error(error)
click to toggle source
# File lib/minitest_rollbar/rollbar_reporter.rb, line 95 def record_new_error(error) @previous_exception_inspect_result = error.inspect @previous_exception = error @sequential_exception_count = 1 end
report_error_to_rollbar(notifier)
click to toggle source
# File lib/minitest_rollbar/rollbar_reporter.rb, line 81 def report_error_to_rollbar(notifier) notifier.error(@previous_exception) end
reset_error_counting()
click to toggle source
# File lib/minitest_rollbar/rollbar_reporter.rb, line 85 def reset_error_counting @previous_exception_inspect_result = nil @previous_exception = nil @sequential_exception_count = 0 end
scope()
click to toggle source
# File lib/minitest_rollbar/rollbar_reporter.rb, line 72 def scope @scope ||= { environment: 'PossibleInfraFlaky', count: @sequential_exception_count, commit_hash: git_commit_hash, build_config: build_config_name } end