# Streaming from controller

**URL:** <https://www.ruby-forum.com/t/streaming-from-controller/167939>\
**Category:** Rails\
**Created:** [May 14, 2009, 9:42am UTC](https://www.ruby-forum.com/t/streaming-from-controller/167939 "2009-05-14T09:42:20Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![casper\_the\_ghost](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/58956e/32.png) [@casper\_the\_ghost](https://www.ruby-forum.com/u/casper_the_ghost)\
**Post date:** [May 14, 2009, 9:42am UTC](https://www.ruby-forum.com/t/streaming-from-controller/167939/1 "2009-05-14T09:42:20Z")

</div>

Hi people,

I need to stream a lot of data from the controller (no need for a  
view). It generates on the go, and can take pretty long time to  
complete. I’m not sure it effective to generate a string (the output  
can be hundreds of megs) and pass it to the view.

However, the only way I found is to use render :text =\> … which also  
can be called only once in controller, so not a real on the go  
streaming.

Neither store to file and then streaming it with render :file works.  
Several simultaneous uses of the controller can generate pretty huge  
files for every instance, which is no-go. Anyway, it’s not on the go  
as well.

The other way is render :text = Proc.new { |r,o| … }, however,  
somehow it doesn’t seem to be working for my case. First of all, it  
complains about some random each … do blocks (which work just fine  
when the blocks are not passed to Proc.new). When I’m commenting  
them out, I’m getting things like that:

Wed May 13 17:34:39 -0700 2009: Read error: #\<ArgumentError: A copy of  
DoController has been removed from the module tree but is still active!

> 

/Library/Ruby/Gems/1.8/gems/activesupport-2.3.2/lib/active\_support/  
dependencies.rb:414:in `load_missing_constant' /Library/Ruby/Gems/1.8/gems/activesupport-2.3.2/lib/active_support/ dependencies.rb:96:in `const\_missing’  
/Users/white/repo/vurvimport/app/controllers/do\_controller.rb:380:in  
`preparesql' /Users/white/repo/vurvimport/app/controllers/do_controller.rb:630:in `rendersql’  
/Library/Ruby/Gems/1.8/gems/actionpack-2.3.2/lib/action\_controller/  
response.rb:153:in `call' /Library/Ruby/Gems/1.8/gems/actionpack-2.3.2/lib/action_controller/ response.rb:153:in `each’  
/Library/Ruby/Gems/1.8/gems/actionpack-2.3.2/lib/action\_controller/  
vendor/rack-1.0/rack/chunked.rb:37:in `each' /Library/Ruby/Gems/1.8/gems/actionpack-2.3.2/lib/action_controller/ vendor/rack-1.0/rack/handler/mongrel.rb:74:in `process’  
/Library/Ruby/Gems/1.8/gems/mongrel-1.1.5/lib/mongrel.rb:159:in  
`process_client' /Library/Ruby/Gems/1.8/gems/mongrel-1.1.5/lib/mongrel.rb:158:in `each’  
/Library/Ruby/Gems/1.8/gems/mongrel-1.1.5/lib/mongrel.rb:158:in  
`process_client' /Library/Ruby/Gems/1.8/gems/mongrel-1.1.5/lib/mongrel.rb:285:in `run’  
/Library/Ruby/Gems/1.8/gems/mongrel-1.1.5/lib/mongrel.rb:285:in  
`initialize' /Library/Ruby/Gems/1.8/gems/mongrel-1.1.5/lib/mongrel.rb:285:in `new’  
/Library/Ruby/Gems/1.8/gems/mongrel-1.1.5/lib/mongrel.rb:285:in `run' /Library/Ruby/Gems/1.8/gems/mongrel-1.1.5/lib/mongrel.rb:268:in `initialize’  
/Library/Ruby/Gems/1.8/gems/mongrel-1.1.5/lib/mongrel.rb:268:in `new' /Library/Ruby/Gems/1.8/gems/mongrel-1.1.5/lib/mongrel.rb:268:in `run’  
/Library/Ruby/Gems/1.8/gems/actionpack-2.3.2/lib/action\_controller/  
vendor/rack-1.0/rack/handler/mongrel.rb:34:in `run' /Library/Ruby/Gems/1.8/gems/rails-2.3.2/lib/commands/server.rb:111 /Library/Ruby/Site/1.8/rubygems/custom_require.rb:31:in `gem\_original\_require’  
/Library/Ruby/Site/1.8/rubygems/custom\_require.rb:31:in `require’  
script/server:3

I think the similar situation is also mentioned here  
[https://rails.lighthouseapp.com/projects/8994/tickets/2546-render-text-proc](https://rails.lighthouseapp.com/projects/8994/tickets/2546-render-text-proc)

So, I’d very appreciate any hint how I can solve this problem. Thank  
you.
