Nokogiri предназначен для построения памяти, потому что вы создаете DOM, и он конвертирует его в XML на лету.Его легко использовать, но есть компромиссы, и одним из них является его использование в памяти.
Возможно, вы захотите использовать Erubis для генерации XML.Вместо того, чтобы собирать все данные перед обработкой и сохранением логики в контроллере, как мы это делали с Rails, для экономии памяти вы можете поместить свою логику в шаблон и сделать так, чтобы она перебирала ваши данные, что должно помочь с потребностями в ресурсах,
Если вам нужен XML в файле, вам может понадобиться сделать это с помощью перенаправления:
erubis options templatefile.erb > xmlfile
Это очень простой пример, но он показывает, что вы можете легко определить шаблон для генерацииXML:
<%
asdf = (1..5).to_a
%>
<xml>
<element>
<% asdf.each do |i| %>
<subelement><%= i %></subelement>
<% end %>
</element>
</xml>
, который, когда я вызываю erubis test.erb
, выдает:
<xml>
<element>
<subelement>1</subelement>
<subelement>2</subelement>
<subelement>3</subelement>
<subelement>4</subelement>
<subelement>5</subelement>
</element>
</xml>
РЕДАКТИРОВАТЬ:
Конкатенация строк выполнялась вечно...
Да, это может просто из-за сбора мусора.Вы не показываете пример кода того, как вы строите свои строки, но Ruby работает лучше, когда вы используете <<
для добавления одной строки к другой, чем при использовании +
.
Также может быть лучше не пытаться хранить все в строке, а вместо этого сразу записать это на диск, добавляя к открытому файлу по ходу работы.
Опять же, без примеров кодаЯ снимаю в темноте о том, что ты можешь делать или почему дела идут медленно.