Class: ActiveAdminImporter::CsvFile
- Inherits:
-
SimpleDelegator
- Object
- SimpleDelegator
- ActiveAdminImporter::CsvFile
- Defined in:
- lib/active_admin_importer/csv_file.rb
Constant Summary collapse
- CSV_READ_OPTIONS =
{ :headers => true, :header_converters => :symbol }.freeze
Class Method Summary collapse
Instance Method Summary collapse
- #__getobj__ ⇒ Object
- #each_row(&block) ⇒ Object
- #find_row_by_number(number) ⇒ Object
- #headers ⇒ Object
-
#initialize(descriptor) ⇒ CsvFile
constructor
A new instance of CsvFile.
-
#md5 ⇒ Object
read file in chunks for memory efficiency.
Constructor Details
#initialize(descriptor) ⇒ CsvFile
Returns a new instance of CsvFile.
12 13 14 |
# File 'lib/active_admin_importer/csv_file.rb', line 12 def initialize(descriptor) @descriptor = descriptor end |
Class Method Details
.read(path) ⇒ Object
8 9 10 |
# File 'lib/active_admin_importer/csv_file.rb', line 8 def self.read(path) new(::File.new(path)) end |
Instance Method Details
#__getobj__ ⇒ Object
16 17 18 |
# File 'lib/active_admin_importer/csv_file.rb', line 16 def __getobj__ @descriptor end |
#each_row(&block) ⇒ Object
20 21 22 |
# 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) ⇒ Object
24 25 26 27 28 29 30 |
# 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 ⇒ Object
32 33 34 |
# File 'lib/active_admin_importer/csv_file.rb', line 32 def headers @headers ||= ::CSV.open(@descriptor, 'r') { |csv| csv.first } end |
#md5 ⇒ Object
read file in chunks for memory efficiency
37 38 39 40 41 42 43 44 |
# 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 |