Некоторые вещи, которые я заметил:
file = File.open(file_name) # takes XML Data and creates a file of the data
File.open(file_name, "w+") do |f| # open file for update
lines = f.readlines # read into array of lines
Обратите внимание, что вы пытаетесь прочитать из файла дескриптор f
, который фактически открыт для записи. f.readlines
должно быть file.readlines
.
Более рубиновый способ работы с ним:
lines = []
File.open(file_name) do |f|
lines = f.readlines
end
Еще одна проблема, которая беспокоит меня в обзоре кода, это то, что вы открываете тот же файл для чтения, что и для добавления. Я бы порекомендовал вам прочитать из одного и записать в другой, только что созданный файл, затем, когда вы закончите, закрыть оба, переименовать старый, а затем переименовать новый файл в имя старого файла, а затем удалить переименованный старый файл. если ты больше не хочешь Это защитная тактика на случай, если во время обработки произойдет сбой.
it.gsub!(/\n/, '')
можно записать как it.chomp!
.
if ((it.include? ('Paragraph')) == 1)
может быть if (it['Paragraph'])
.