Ezra, Great job on merb! And the myriad of other projects you're involved in!
Quick question: - I followed your instructions checked out the latest merb trunk (rev 99) - rake installed (after installing all it's dependencies... do you mind listing those on the README somewhere? :) - cd'd to the sample_app, and proceeded to upload a 500mb iso image - the problem: it spins its wheels until it's finished and then it shows: File uploaded successfully "UPLOADED: {"commit"=>"Upload", "action"=>"upload", "id"=>nil, "controller"=>"files", "upload_id"=>"1164816252", "data"=>{"name"=>"data", "type"=>"application/x-cd-image", "tempfile"=>#, "filename"=>"debian-31r2-i386-netinst.iso"}} - so it's uploading fine but it's not showing the progress of the upload. - what am I doing wrong? thanks again! cheers, -rjs- here's what my terminal shows: {"action"=>"progress", "id"=>nil, "controller"=>"files", "upload_id"=>"1164816252"}(this one several times) skip mutex (this one several times) {"action"=>"progress", "id"=>nil, "controller"=>"files", "upload_id"=>"1164816252"}(this one several times) => fh[type] = application/x-cd-image skip mutex (this one several times) {"action"=>"progress", "id"=>nil, "controller"=>"files", "upload_id"=>"1164816252"}(this one several times) {"commit"=>"Upload", "action"=>"upload", "id"=>nil, "controller"=>"files", "upload_id"=>"1164816252", "data"=>{"name"=>"data", "type"=>"application/x-cd-image", "tempfile"=>#<File:/tmp/Merb7817.0>, "filename"=>"debian-31r2-i386-netinst.iso"}} skip mutex On 11/28/06, Ezra Zygmuntowicz <[EMAIL PROTECTED]> wrote:
There is an example merb controller for use with the mongrel_upload_progress if anyone is interested in using a small merb app for their upload app server. We have a number of customers doing this and some of them are handling a ton of file uploads all the time. Merb can also be a nice secure download manager. The Files controller in the example app in the merb svn shows how easy it is to do: http://svn.devjavu.com/merb/examples/sample_app/dist/app/controllers/ files.rb You can do a svn checkout of the merb svn here: $ svn co http://svn.devjavu.com/merb And build it and play with the example app like this: $ cd merb $ sudo rake install $ cd examples/sample_app $ merb -p 4000 Then go to http://localhost:4000/files/start in your browser to see an example of the upload progress. Sice it is running locally you shoudl try to upload a file at least 100Mb or bigger or else it will happen too fast and you won't see the progress bar. The nice thing about the way merb works is that it doesn't use cgi.rb for mime parsing and it is written in a more thread safe way then actionpack. So multiple concurrent requests can be processed and have their mime parsing done all at the same time. Merb only does a mutex around the smallest possible place where you might be calling ActiveRecord code. With the rails dispatcher, the mutex surrounds the entire routing code and mime parsing and your controler code. Merb only locks around the action in your controller code. It does route recognition and mime parsing outside the mutex in a multi threaded way. This allows us to use ActiveRecord in single threaded mode which is better then AR's multi threaded mode for performance. So we use the smallest sized lock we can in order to still support this, but we do all the heavyweight routing and mime parsing concurrently. I promised Zed I would do a write up about using a merb app for a dedicated upload server in conjunction with a rails app. I will try to get something written this week and posted. Until then I am open to and questions about merb and you can file tickets for support or feature requests here: http://merb.devjavu.com/ http://merb.devjavu.com/projects/merb/register Zed and I hope to come up with a solution so that we can use the upload progress without reparsing the mime twice per file. Right now mongrel streams the upload to a tmp file and increments the progress bar all the way to 100% before it hands control to your rails or merb controller to deal with the file. But then rails or merb has to parse the mime boundaries of the entire file again. So you may notice with big files that right when the progress bar makes it to 95-100% it will pause while rails or meb parses the mime again into another tmpfile. This is obviously not an optimal way to do this. Zed has started an awesome fast C mime carver and I will be working with him to integrate this so uploads can be parsed once with the fast C mimer and then just handed off to the next handler with no need to reparse. Cheers- -- Ezra Zygmuntowicz -- Lead Rails Evangelist -- [EMAIL PROTECTED] -- Engine Yard, Serious Rails Hosting -- (866) 518-YARD (9273) _______________________________________________ Mongrel-users mailing list Mongrel-users@rubyforge.org http://rubyforge.org/mailman/listinfo/mongrel-users
_______________________________________________ Mongrel-users mailing list Mongrel-users@rubyforge.org http://rubyforge.org/mailman/listinfo/mongrel-users