Bill Walton
2006-May-24 20:03 UTC
[Instantrails-users] Fw: [Rails] Mongrel errors on file upload
Sorry for the cross-post but I wanted to ask here too since it''s
certainly possible that this is an InstantRails-specific problem.
Thanks,
Bill
----- Original Message -----
From: Bill Walton
To: rails at lists.rubyonrails.org
Sent: Wednesday, May 24, 2006 2:50 PM
Subject: [Norton AntiSpam] [Rails] Mongrel errors on file upload
I did a spike in my sandbox to make sure I understood how to do file uploads
using CGI and there seems to be a problem with Mongrel. WEBrick
doesn''t display the problem, but I can reproduce it everytime with
Mongrel. I''d really appreciate it if someone would try out the code
below and see if they see the same thing.
The browser behavior is:
- under IE6, a Page Not Found error
- under Firefox, a blank white page
The display in the command window is not browser-dependent. The error listing
starts with "Error calling Dispatcher.dispatch #<TypeError: superclass
mismatch for class Tempfile>". I''ve included the entire error
listing below.
The controller and view code is given below.
The CGI file upload delivers either an IOString or a Tempfile, depending on the
size of the file being uploaded. I''m using a 3K file to test IOString,
and a 10K file to test Tempfile. Both are XML text files.
The scenerio that produces the error is:
1) mongrel_rails start
2) launch brower and nav to http://localhost:3000/create
3) upload small file
4) upload large file
If I upload in reverse, first the large file and then the small file,
everything''s fine.
If I upload the small file and then the large file, Mongrel sends my browser off
into the weeds and shows me the following in the command window.
C:\InstantRails-1.3\rails_apps\sandbox>mongrel_rails start
Running Mongrel server in development mode at 0.0.0.0:3000
Server Ready. Use CTRL-Pause/Break to quit.
Error calling Dispatcher.dispatch #<TypeError: superclass mismatch for class
Tem
pfile>
C:/InstantRails-1.3/ruby/lib/ruby/1.8/tempfile.rb:12
C:/InstantRails-1.3/ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:21:in
`require''
C:/InstantRails-1.3/ruby/lib/ruby/gems/1.8/gems/activesupport-1.3.1/lib/active_support/dependencies.rb:147:in
`require''
C:/InstantRails-1.3/ruby/lib/ruby/1.8/cgi.rb:987:in `read_multipart''
C:/InstantRails-1.3/ruby/lib/ruby/1.8/cgi.rb:984:in `read_multipart''
C:/InstantRails-1.3/ruby/lib/ruby/gems/1.8/gems/actionpack-1.12.1/lib/action_controller/cgi_ext/raw_post_data_fix.rb:20:in
`initialize_query''
C:/InstantRails-1.3/ruby/lib/ruby/1.8/cgi.rb:2270:in `initialize''
C:/InstantRails-1.3/ruby/lib/ruby/gems/1.8/gems/mongrel-0.3.11-mswin32/lib/mongrel/cgi.rb:41:in
`initialize''
C:/InstantRails-1.3/ruby/lib/ruby/gems/1.8/gems/mongrel-0.3.11-mswin32/lib/mongrel/rails.rb:57:in
`process''
C:/InstantRails-1.3/ruby/lib/ruby/gems/1.8/gems/mongrel-0.3.11-mswin32/lib/mongrel.rb:389:in
`process_client''
C:/InstantRails-1.3/ruby/lib/ruby/gems/1.8/gems/mongrel-0.3.11-mswin32/lib/mongrel.rb:359:in
`initialize''
C:/InstantRails-1.3/ruby/lib/ruby/1.8/timeout.rb:56:in `timeout''
C:/InstantRails-1.3/ruby/lib/ruby/gems/1.8/gems/mongrel-0.3.11-mswin32/lib/mongrel.rb:358:in
`initialize''
C:/InstantRails-1.3/ruby/lib/ruby/gems/1.8/gems/mongrel-0.3.11-mswin32/lib/mongrel.rb:356:in
`initialize''
C:/InstantRails-1.3/ruby/lib/ruby/gems/1.8/gems/mongrel-0.3.11-mswin32/lib/mongrel.rb:355:in
`initialize''
C:/InstantRails-1.3/ruby/lib/ruby/gems/1.8/gems/mongrel-0.3.11-mswin32/bin/mongrel_rails:91:in
`start_mongrel''
C:/InstantRails-1.3/ruby/lib/ruby/gems/1.8/gems/mongrel-0.3.11-mswin32/bin/mongrel_rails:144:in
`run''
C:/InstantRails-1.3/ruby/lib/ruby/gems/1.8/gems/mongrel-0.3.11-mswin32/lib/mongrel/command.rb:163:in
`run''
C:/InstantRails-1.3/ruby/lib/ruby/gems/1.8/gems/mongrel-0.3.11-mswin32/bin/mongrel_rails:228
C:/InstantRails-1.3/ruby/bin/mongrel_rails:18
Here''s my code.
------------ create_controller.rb --------------
class CreateController < ApplicationController
def index
end
def read_in
if params[:file_to_upload].instance_of?(Tempfile)
FileUtils.copy(params[:file_to_upload].local_path,
"#{RAILS_ROOT}/public/sandbox1.xml")
@location_display = "Copied the Tempfile to sandbox1.xml"
else
File.open("#{RAILS_ROOT}/public/sandbox2.xml","w"){|f|
f.write(params[:file_to_upload].read)
f.close}
@location_display = "Saved the IOString to sandbox2.xml"
end
end
end
------------ index.rhtml ------------
<h1>Choose the file to upload:</h1>
<%= start_form_tag({:action => ''read_in''}, :method =>
"POST", :multipart => true) %>
<label>File to Upload:</label>
<%= file_field_tag "file_to_upload" %><br/><br/>
<%= submit_tag value="Upload" %>
<% end_form_tag %>
--------------- read_in.rhtml --------------
<h1>File stored at:</h1>
<%=h @location_display %>
--------------------------------------------------
I''m running Windows XP. I seem to be having a "blond moment"
and can''t remember how to check Rails / Ruby versions but am using
InstantRails 1.3.
Thanks in advance to anyone who''ll make the time to verify (or not) the
problem I''m seeing.
Best regards,
Bill
--------------------------------------------------------------------------------
_______________________________________________
Rails mailing list
Rails at lists.rubyonrails.org
http://lists.rubyonrails.org/mailman/listinfo/rails
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
http://rubyforge.org/pipermail/instantrails-users/attachments/20060524/22bbb376/attachment.htm
Curt Hibbs
2006-May-27 14:04 UTC
[Instantrails-users] Fw: [Rails] Mongrel errors on file upload
Doesn''t seem likely that this is specific to IR. Have you asked Zed about this? Curt On 5/24/06, Bill Walton <bill.walton at charter.net> wrote:> > Sorry for the cross-post but I wanted to ask here too since it''s > certainly possible that this is an InstantRails-specific problem. > > Thanks, > Bill > ----- Original Message ----- *From:* Bill Walton <bill.walton at charter.net> > *To:* rails at lists.rubyonrails.org > *Sent:* Wednesday, May 24, 2006 2:50 PM > *Subject:* [Norton AntiSpam] [Rails] Mongrel errors on file upload > > I did a spike in my sandbox to make sure I understood how to do file > uploads using CGI and there seems to be a problem with Mongrel. WEBrick > doesn''t display the problem, but I can reproduce it everytime with Mongrel. > I''d really appreciate it if someone would try out the code below and see if > they see the same thing. > > The browser behavior is: > - under IE6, a Page Not Found error > - under Firefox, a blank white page > > The display in the command window is not browser-dependent. The error > listing starts with "Error calling Dispatcher.dispatch #<TypeError: > superclass mismatch for class Tempfile>". I''ve included the entire error > listing below. > > The controller and view code is given below. > > The CGI file upload delivers either an IOString or a Tempfile, depending > on the size of the file being uploaded. I''m using a 3K file to test > IOString, and a 10K file to test Tempfile. Both are XML text files. > > The scenerio that produces the error is: > 1) mongrel_rails start > 2) launch brower and nav to http://localhost:3000/create > 3) upload small file > 4) upload large file > > If I upload in reverse, first the large file and then the small file, > everything''s fine. > > If I upload the small file and then the large file, Mongrel sends my > browser off into the weeds and shows me the following in the command window. > > > C:\InstantRails-1.3\rails_apps\sandbox>mongrel_rails start > Running Mongrel server in development mode at 0.0.0.0:3000 > Server Ready. Use CTRL-Pause/Break to quit. > Error calling Dispatcher.dispatch #<TypeError: superclass mismatch for > class Tem > pfile> > C:/InstantRails-1.3/ruby/lib/ruby/1.8/tempfile.rb:12 > C:/InstantRails-1.3 > /ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:21:in `require'' > C:/InstantRails-1.3/ruby/lib/ruby/gems/1.8/gems/activesupport-1.3.1/lib/active_support/dependencies.rb:147:in > `require'' > C:/InstantRails-1.3/ruby/lib/ruby/1.8/cgi.rb:987:in `read_multipart'' > C:/InstantRails-1.3/ruby/lib/ruby/1.8/cgi.rb:984:in `read_multipart'' > C:/InstantRails-1.3/ruby/lib/ruby/gems/1.8/gems/actionpack-1.12.1/lib/action_controller/cgi_ext/raw_post_data_fix.rb:20:in > `initialize_query'' > C:/InstantRails-1.3/ruby/lib/ruby/1.8/cgi.rb:2270:in `initialize'' > C:/InstantRails-1.3/ruby/lib/ruby/gems/1.8/gems/mongrel-0.3.11-mswin32/lib/mongrel/cgi.rb:41:in > `initialize'' > C:/InstantRails-1.3/ruby/lib/ruby/gems/1.8/gems/mongrel-0.3.11-mswin32/lib/mongrel/rails.rb:57:in > `process'' > C:/InstantRails-1.3/ruby/lib/ruby/gems/1.8/gems/mongrel-0.3.11-mswin32/lib/mongrel.rb:389:in > `process_client'' > C:/InstantRails-1.3/ruby/lib/ruby/gems/1.8/gems/mongrel-0.3.11-mswin32/lib/mongrel.rb:359:in > `initialize'' > C:/InstantRails-1.3/ruby/lib/ruby/1.8/timeout.rb:56:in `timeout'' > C:/InstantRails-1.3/ruby/lib/ruby/gems/1.8/gems/mongrel-0.3.11-mswin32/lib/mongrel.rb:358:in > `initialize'' > C:/InstantRails-1.3/ruby/lib/ruby/gems/1.8/gems/mongrel-0.3.11-mswin32/lib/mongrel.rb:356:in > `initialize'' > C:/InstantRails-1.3/ruby/lib/ruby/gems/1.8/gems/mongrel-0.3.11-mswin32/lib/mongrel.rb:355:in > `initialize'' > C:/InstantRails-1.3/ruby/lib/ruby/gems/1.8/gems/mongrel-0.3.11-mswin32/bin/mongrel_rails:91:in > `start_mongrel'' > C:/InstantRails-1.3/ruby/lib/ruby/gems/1.8/gems/mongrel-0.3.11-mswin32/bin/mongrel_rails:144:in > `run'' > C:/InstantRails-1.3/ruby/lib/ruby/gems/1.8/gems/mongrel-0.3.11-mswin32/lib/mongrel/command.rb:163:in > `run'' > C:/InstantRails-1.3/ruby/lib/ruby/gems/1.8/gems/mongrel-0.3.11-mswin32 > /bin/mongrel_rails:228 > C:/InstantRails-1.3/ruby/bin/mongrel_rails:18 > Here''s my code. > > ------------ create_controller.rb -------------- > class CreateController < ApplicationController > > def index > end > > def read_in > if params[:file_to_upload].instance_of?(Tempfile) > FileUtils.copy(params[:file_to_upload].local_path, > "#{RAILS_ROOT}/public/sandbox1.xml") > @location_display = "Copied the Tempfile to sandbox1.xml" > else > File.open("#{RAILS_ROOT}/public/sandbox2.xml","w"){|f| > f.write(params[:file_to_upload].read) > f.close} > @location_display = "Saved the IOString to sandbox2.xml" > end > end > end > > ------------ index.rhtml ------------ > <h1>Choose the file to upload:</h1> > > <%= start_form_tag({:action => ''read_in''}, :method => "POST", :multipart > => true) %> > > <label>File to Upload:</label> > <%= file_field_tag "file_to_upload" %><br/><br/> > > <%= submit_tag value="Upload" %> > <% end_form_tag %> > > --------------- read_in.rhtml -------------- > <h1>File stored at:</h1> > > <%=h @location_display %> > > -------------------------------------------------- > > I''m running Windows XP. I seem to be having a "blond moment" and can''t > remember how to check Rails / Ruby versions but am using InstantRails 1.3. > > Thanks in advance to anyone who''ll make the time to verify (or not) the > problem I''m seeing. > > Best regards, > Bill > > ------------------------------ > > _______________________________________________ > Rails mailing list > Rails at lists.rubyonrails.org > http://lists.rubyonrails.org/mailman/listinfo/rails > > > _______________________________________________ > Instantrails-users mailing list > Instantrails-users at rubyforge.org > http://rubyforge.org/mailman/listinfo/instantrails-users > >-------------- next part -------------- An HTML attachment was scrubbed... URL: http://rubyforge.org/pipermail/instantrails-users/attachments/20060527/2174c276/attachment.htm