class ActiveRecordImporter::Dispatcher
Public Instance Methods
call()
click to toggle source
# File lib/active_record_importer/dispatcher.rb, line 10 def call divide_and_conquer create_import_failed_file end
Private Instance Methods
create_import_failed_file()
click to toggle source
# File lib/active_record_importer/dispatcher.rb, line 54 def create_import_failed_file return if import.nil? || !File.exists?(temp_failed_file_path) File.open(temp_failed_file_path) do |file| import.failed_file = file # I forced to save it as 'text/csv' because # the file is being saved as 'text/x-pascal' # and I still have no idea why?!? import.failed_file_content_type = 'text/csv' import.save! end destroy_temp_failed_file end
csv_options()
click to toggle source
# File lib/active_record_importer/dispatcher.rb, line 27 def csv_options opts = klass_csv_opts return opts if import.nil? || import.batch_size.blank? opts.merge(chunk_size: import.batch_size) end
destroy_temp_failed_file()
click to toggle source
# File lib/active_record_importer/dispatcher.rb, line 70 def destroy_temp_failed_file FileUtils.rm(temp_failed_file_path) end
divide_and_conquer()
click to toggle source
# File lib/active_record_importer/dispatcher.rb, line 17 def divide_and_conquer File.open(import_file, 'r:bom|utf-8') do |file| SmarterCSV.process(file, csv_options) do |collection| queue_or_execute(collection) end end true end
klass_csv_opts()
click to toggle source
# File lib/active_record_importer/dispatcher.rb, line 33 def klass_csv_opts importable.importer_options.csv_opts.to_hash end
process_import(collection)
click to toggle source
# File lib/active_record_importer/dispatcher.rb, line 42 def process_import(collection) BatchImporter.new( import: import, importable: importable, data: collection ).process! end
queue(_collection)
click to toggle source
# File lib/active_record_importer/dispatcher.rb, line 50 def queue(_collection) # To follow end
queue_or_execute(collection)
click to toggle source
# File lib/active_record_importer/dispatcher.rb, line 37 def queue_or_execute(collection) process_import(collection) if execute queue(collection) end
target_file_name()
click to toggle source
# File lib/active_record_importer/dispatcher.rb, line 78 def target_file_name "failed_file_#{import.id}.csv" end
temp_failed_file_path()
click to toggle source
# File lib/active_record_importer/dispatcher.rb, line 74 def temp_failed_file_path "/tmp/#{target_file_name}" end