I'm trying to make Rails 2.3 w/ Rack as backwords compat with the CGI API. So this is definitely something we need to fix in Rails.
Please create a ticket on LH with some tests (so we can catch this issue if it happens again) and I'll pull it in ASAP. Thanks for finding this. On Tue, Jan 20, 2009 at 9:35 AM, Mislav Marohnić <[email protected]> wrote: > We're using Paperclip for file uploads and recent edge Rails rendered our > user profile forms unusable. > File uploads don't break our application when there was an actual file > upload; what breaks Paperclip is the case when *nothing was selected* in the > file input. The form is still sent with multipart encoding and parsed by > Rack, which creates a Tempfile *regardless* of whether some data was > received or not. > The result of Rack processing a single file field is a hash with these > keys: {:filename, :type, :name, :tempfile, :head}. > Rails further processes this > in ActionController::UrlEncodedPairParser.get_typed_value. When it sees the > above formatted hash, it replaces it with the Tempfile object it references > and applies other metadata, like filename, as properties of this object. > In short, when a "user[avatar]" file field was sent empty, *older* Rails > version would receive nothing: > params[:user][:avatar] # => nil > *Now* a Tempfile is received in any case: > params[:user][:avatar] # => #<File:/tmp/RackMultipart.xxxyyy> > So naturally Paperclip thinks a file was uploaded and explodes because this > object has nil value `original_filename` and a size of 0. > Do you think this should be handled in Rails or Rack? > In the meantime, I've monkeypatched our app: http://gist.github.com/49519 > > > -- Joshua Peek --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Core" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/rubyonrails-core?hl=en -~----------~----~----~----~------~----~------~--~---
