Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • Home
  • SEARCH
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 3878550
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 19, 20262026-05-19T22:37:32+00:00 2026-05-19T22:37:32+00:00

I have a Rails application that uses delayed_job in a reporting feature to run

  • 0

I have a Rails application that uses delayed_job in a reporting feature to run some very large reports. One of these generates a massive XML file and it can take literally days in the bad, old way the code is written. I thought that, having seen impressive benchmarks on the internet, Nokogiri could afford us some nontrivial performance gains.

However, the only examples I can find involve using the Nokogiri Builder to create an xml object, then using .to_xml to write the whole thing. But there isn’t enough memory in my zip code to handle that for a file of this size.

So can I use Nokogiri to stream or write this data out to file?

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-19T22:37:32+00:00Added an answer on May 19, 2026 at 10:37 pm

    Nokogiri is designed to build in memory because you build a DOM and it converts it to XML on the fly. It’s easy to use, but there are trade-offs, and doing it in memory is one of them.

    You might want to look into using Erubis to generate the XML. Rather than gather all the data before processing and keeping the logic in a controller, like we’d do with Rails, to save memory you can put your logic in the template and have it iterate over your data, which should help with the resource demands.

    If you need the XML in a file you might need to do that using redirection:

    erubis options templatefile.erb > xmlfile
    

    This is a very simple example, but it shows you could easily define a template to generate XML:

    <% 
    asdf = (1..5).to_a 
    %>
    <xml>
      <element>
    <% asdf.each do |i| %>
        <subelement><%= i %></subelement>
    <% end %>
      </element>
    </xml>
    

    which, when I call erubis test.erb outputs:

    <xml>
      <element>
        <subelement>1</subelement>
        <subelement>2</subelement>
        <subelement>3</subelement>
        <subelement>4</subelement>
        <subelement>5</subelement>
      </element>
    </xml>
    

    EDIT:

    The string concatenation was taking forever…

    Yes, it can simply because of garbage collection. You don’t show any code example of how you’re building your strings, but Ruby works better when you use << to append one string to another than when using +.

    It also might work better to not try to keep everything in a string, but instead to write it immediately to disk, appending to an open file as you go.

    Again, without code examples I’m shooting in the dark about what you might be doing or why things run slow.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I have a Rails application that uses ActiveRecordStore for sessions. I need a PHP
I am thinking of working on a Rails application that uses PostgreSQL. I have
I have a nice RESTful controller in my Rails application that uses responds_to to
I have a Rails application that uses Bundler for dependency management. I've got the
I'm adding a password reset feature to my Rails application that uses Authlogic. I
My Rails application uses STI where I have two different types of Customers. One
I have an application on Heroku that runs on Rails 2.3.5 it also uses
I have a Rails application that uses a static_pages controller to render static pages
I have a rails 3 application that uses Devise and the confirmable module. However,
I have a Rails 2.3 web application that uses the collection_select helper with :multiple

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.