class ActiveRecordImporter::BatchImporter

Public Instance Methods

process!() click to toggle source
# File lib/active_record_importer/batch_importer.rb, line 9
def process!
  @imported_count, @failed_count = 0, 0

  data.each do |row_attrs|
    next if row_attrs.blank?
    process_row(row_attrs.symbolize_keys!)
  end

  set_import_count
end

Private Instance Methods

csv_options() click to toggle source
# File lib/active_record_importer/batch_importer.rb, line 54
def csv_options
  importer_options.csv_opts.to_hash
end
failed_file() click to toggle source
# File lib/active_record_importer/batch_importer.rb, line 42
def failed_file
  return unless import.present? || import.respond_to?(:failed_file)
  @failed_file ||= FailedFileBuilder.new(import)
end
process_row(row_attrs) click to toggle source
# File lib/active_record_importer/batch_importer.rb, line 22
def process_row(row_attrs)
  processor =
    DataProcessor.new(
      import: import,
      importable: importable,
      row_attrs: row_attrs
    )
  return @imported_count += 1 if processor.process

  write_failed_row(row_attrs, processor.row_errors)
  @failed_count += 1
end
set_import_count() click to toggle source
# File lib/active_record_importer/batch_importer.rb, line 35
def set_import_count
  return unless import

  Import.update_counters(import.id, imported_rows: @imported_count)
  Import.update_counters(import.id, failed_rows: @failed_count)
end
write_failed_row(row_attrs, errors) click to toggle source
# File lib/active_record_importer/batch_importer.rb, line 47
def write_failed_row(row_attrs, errors)
  return puts errors.inspect unless failed_file
  failed_file.write(row_attrs.merge(import_errors: errors))
end