Вероятно, у вас не хватает памяти, потому что symptomsList
становится слишком большим в размере памяти. Почему бы не выполнить SQL в цикле xpath?
require 'nokogiri'
sympFile = File.open("Temp.xml")
@doc = Nokogiri::XML(sympFile)
sympFile.close()
@doc.xpath("////DisorderSign").each do |x|
signId = x.at('ClinicalSign').attribute('id').text()
name = x.at('ClinicalSign').element_children().text()
Symptom.where(:name => name, :signid => signId.to_i).first_or_create
end
Возможно также, что файл слишком велик для обработки буфера. В этом случае вы можете нарезать его на более мелкие временные файлы и обрабатывать их по отдельности.