class Topographer::Importer::Helpers::WriteLogToCSV
Public Class Methods
new()
click to toggle source
# File lib/topographer/importer/helpers/write_log_to_csv.rb, line 10 def initialize end
Public Instance Methods
write_log_to_csv(log, output_file_path, options = {})
click to toggle source
# File lib/topographer/importer/helpers/write_log_to_csv.rb, line 14 def write_log_to_csv(log, output_file_path, options = {}) @log = log @write_all = options.fetch(:write_all, true) CSV.open(output_file_path, 'wb') do |csv_file| csv_file << get_detail_header csv_file << get_details csv_file << get_log_header if @log.entries? @log.all_entries.each do |entry| if entry.failure? || @write_all csv_file << format_log_entry(entry) end end end end
Private Instance Methods
format_log_entry(log_entry)
click to toggle source
# File lib/topographer/importer/helpers/write_log_to_csv.rb, line 61 def format_log_entry(log_entry) entry = [] entry << log_entry.input_identifier entry << log_entry.source_identifier entry << log_entry.model_name entry << log_entry.timestamp.strftime('%F - %T:%L') entry << ((log_entry.success?) ? 'Success' : 'Failure') entry << log_entry.message entry << format_log_entry_details(log_entry.details) end
format_log_entry_details(details)
click to toggle source
# File lib/topographer/importer/helpers/write_log_to_csv.rb, line 72 def format_log_entry_details(details) if details formatted_details = [] details.keys.each do |key| detail_string = '' detail_messages = Array(details[key]) if detail_messages.any? detail_string << key.to_s.capitalize << ': ' detail_string << detail_messages.join(', ') end formatted_details << detail_string unless detail_string.empty? end formatted_details.join("; ") else '' end end
get_detail_header()
click to toggle source
# File lib/topographer/importer/helpers/write_log_to_csv.rb, line 32 def get_detail_header if @write_all ['Fatal Errors', 'Total Imports', 'Successful Imports', 'Failed Imports'] else ['Fatal Errors', 'Failed Imports'] end end
get_details()
click to toggle source
# File lib/topographer/importer/helpers/write_log_to_csv.rb, line 40 def get_details details = [] details << ((@log.fatal_error?) ? @log.fatal_errors.size : 'None') if @write_all details << @log.total_imports details << @log.successful_imports end details << @log.failed_imports end
get_log_header()
click to toggle source
# File lib/topographer/importer/helpers/write_log_to_csv.rb, line 50 def get_log_header header = [] header << 'Input Identifier' header << 'Source Identifier' header << 'Model Class' header << 'Timestamp' header << 'Status' header << 'Message' header << 'Details' end