Dealing with very large XML output

How about this… move the rendering to a background process with say, BackgroundDrb.
Your action redirects the client to the location of the static file and you let someone like apache stream the file.

Could get quite I/O intensive, but atleast you can stream. Might be ok if you only handle a small number of requests.