Я пытаюсь импортировать данные из CSV в базу данных, используя классы, чтобы я мог легко написать контрольный пример для созданной мной задачи по рейку импорта csv
Однако мое решение не работает .
И я тоже чувствую:
- Это не имеет смысла
- Помимо ощущения, что это не очень хорошее решение, связанное с мастерством Ruby, оно не работает.
Вот что я придумал в моих engine / csv_importer / lib / tasks / csv_import.rake
require 'open-uri'
require 'csv'
namespace :csv_import do
desc 'Import users from csv'
task users: :environment do
WebImport.new(url: 'http://blablabla.com/details/people.csv').call.answers
end
end
class WebImport
def initialize(url)
@csv_string = url
end
def call
CSV.parse(@csv_string, headers: true, header_converters: :symbol) do |row|
next unless row[:name].present? && row[:email_address].present?
end
CsvImporter::User.create row.to_h
end
def self.answers
user = []
counter = 0
duplicate_counter = 0
user.persisted? ? counter + 1 : duplicate_counter + 1
p "Email duplicate record: #{user.email_address} - #{user.errors.full_messages.join(',')}" if user.errors.any?
p "Imported #{counter} users, #{duplicate_counter} duplicate rows ain't added in total"
end
end
Ошибка при запуске rake csv_import: пользователи
$ rake csv_import:users
rake aborted!
NoMethodError: private method `gets' called for {:url=>"http://blablabla.com/details/people.csv"}:Hash
Как мне заставить это работать и написать ТЕСТ для этого в долгосрочной перспективе?