class UsdaNutrientDatabase::Import::Base
Attributes
directory[R]
objects_to_import[R]
Public Class Methods
new(directory)
click to toggle source
# File lib/usda_nutrient_database/import/base.rb, line 6 def initialize(directory) @directory = directory @objects_to_import = [] end
Public Instance Methods
import()
click to toggle source
# File lib/usda_nutrient_database/import/base.rb, line 11 def import log_import_started CSV.open(file_location, 'r:iso-8859-1:utf-8', csv_options) do |csv| csv.each { |row| objects_to_import << extract_row(row) } end ar_import? ? save_objects : objects_to_import.each(&:save) end
Private Instance Methods
apply_typecasts(row)
click to toggle source
# File lib/usda_nutrient_database/import/base.rb, line 56 def apply_typecasts(row) row end
ar_import?()
click to toggle source
# File lib/usda_nutrient_database/import/base.rb, line 24 def ar_import? UsdaNutrientDatabase.activerecord_import? end
build_ar_object(row)
click to toggle source
# File lib/usda_nutrient_database/import/base.rb, line 36 def build_ar_object(row) find_or_initialize(row).tap do |object| columns.each_with_index do |column, index| object.send("#{column}=", row[index]) end end end
build_object(row)
click to toggle source
# File lib/usda_nutrient_database/import/base.rb, line 32 def build_object(row) ar_import? ? build_values_array(row) : build_ar_object(row) end
build_values_array(row)
click to toggle source
# File lib/usda_nutrient_database/import/base.rb, line 44 def build_values_array(row) columns.map.with_index { |_, index| row[index] } end
columns()
click to toggle source
# File lib/usda_nutrient_database/import/base.rb, line 48 def columns raise NotImplementedError end
csv_options()
click to toggle source
# File lib/usda_nutrient_database/import/base.rb, line 68 def csv_options { col_sep: '^', quote_char: '~' } end
extract_row(row)
click to toggle source
# File lib/usda_nutrient_database/import/base.rb, line 28 def extract_row(row) build_object(apply_typecasts(row)) end
file_location()
click to toggle source
# File lib/usda_nutrient_database/import/base.rb, line 60 def file_location "#{directory}/#{filename}" end
filename()
click to toggle source
# File lib/usda_nutrient_database/import/base.rb, line 64 def filename raise NotImplementedError end
find_or_initialize(row)
click to toggle source
# File lib/usda_nutrient_database/import/base.rb, line 52 def find_or_initialize(row) raise NotImplementedError end
save_objects()
click to toggle source
# File lib/usda_nutrient_database/import/base.rb, line 72 def save_objects raise NotImplementedError end