class ActiveAdminImporter::CsvFile

Constants

CSV_READ_OPTIONS

Public Class Methods

new(descriptor) click to toggle source
# File lib/active_admin_importer/csv_file.rb, line 12
def initialize(descriptor)
  @descriptor = descriptor
end
read(path) click to toggle source
# File lib/active_admin_importer/csv_file.rb, line 8
def self.read(path)
  new(::File.new(path))
end

Public Instance Methods

__getobj__() click to toggle source
# File lib/active_admin_importer/csv_file.rb, line 16
def __getobj__
  @descriptor
end
each_row(&block) click to toggle source
# File lib/active_admin_importer/csv_file.rb, line 20
def each_row(&block)
  ::CSV.parse(self, CSV_READ_OPTIONS, &block)
end
find_row_by_number(number) click to toggle source
# File lib/active_admin_importer/csv_file.rb, line 24
def find_row_by_number(number)
  result = ::CSV.foreach(self, CSV_READ_OPTIONS).with_index do |row, i|
    return row if i == number - 1
  end

  result
end
headers() click to toggle source
# File lib/active_admin_importer/csv_file.rb, line 32
def headers
  @headers ||= ::CSV.open(@descriptor, 'r') { |csv| csv.first }
end
md5() click to toggle source

read file in chunks for memory efficiency

# File lib/active_admin_importer/csv_file.rb, line 37
def md5
  @md5 ||= ::File.open(@descriptor, "rb") do |io|
    _md5 = ::Digest::MD5.new
    buffer = ""
    _md5.update(buffer) while io.read(4096, buffer)
    _md5
  end
end