module DataCleanup # Report the status of the data validations after checks have been run. module Reporting mattr_accessor :total_record_count mattr_accessor :invalid_record_count mattr_accessor :invalid_records mattr_accessor :issues_found self.total_record_count = 0 self.invalid_record_count = 0 self.invalid_records = [] self.issues_found = [] module_function # Prepare the report for printing to log and STDOUT def prepare! invalid_records.each do |record| record.errors.full_messages.each do |issue| desc = "#{record.class.model_name} was invalid: #{issue}" issues_found << desc unless issues_found.include?(desc) end end end def report issues_found.each do |issue| DataCleanup.display issue DataCleanup.logger.info issue end color = invalid_record_count.zero? ? :green : :red DataCleanup.display(<<~TEXT, color: color) Invalid records: #{invalid_record_count} / #{total_record_count} TEXT end end end