desperate, errors with file upload

hello,

i implementing a file upload using paperclip plugin. i getting the following error [1] when uploading a file. I'm using the gems rails v2.3.8 and paperclip v2.1.6. the parameter hash looks like [2], the model like [3].

Interesting is that i get two different errors, on the localhost with webrick it says:

Status: 500 Internal Server Error   no marshal_dump is defined for class Proc     /var/lib/gems/1.8/gems/activesupport-2.3.8/lib/active_support/ message_verifier.rb:38:in `dump'

on the server (same setup):

Status: 500 Internal Server Error   can't dump File     /usr/lib/ruby/gems/1.8/gems/activesupport-2.3.8/lib/active_support/ message_verifier.rb:38:in `dump'

any hints? thx

[2] Processing UploadItemController#create (for 84.119.78.19 at 2011-06-01 11:42:48) [POST]   Parameters: {"commit"=>"Upload", "action"=>"create", "authenticity_token"=>"o5Dbbzd0CA45UpNQ++mQw5gQtoUkmbBT2UEP3FuPAbM=", "controller"=>"upload_item", "upload_item"=>{"title"=>"dddd", "upload"=>#<File:/tmp/RackMultipart7503-0>, "upload_rules"=>"0", "description"=>"dsf"}} Redirected to http://ichsehichseh.wirdorange.org/upload_items/new Completed in 298ms (DB: 26) | 302 Found [http:// ichsehichseh.wirdorange.org/upload_items]

[1] /!\ FAILSAFE /!\ Wed Jun 01 11:42:48 +0200 2011   Status: 500 Internal Server Error   can't dump File     /usr/lib/ruby/gems/1.8/gems/activesupport-2.3.8/lib/active_support/ message_verifier.rb:38:in `dump'     /usr/lib/ruby/gems/1.8/gems/activesupport-2.3.8/lib/active_support/ message_verifier.rb:38:in `generate'     /usr/lib/ruby/gems/1.8/gems/actionpack-2.3.8/lib/action_controller/ session/cookie_store.rb:157:in `marshal'     /usr/lib/ruby/gems/1.8/gems/actionpack-2.3.8/lib/action_controller/ session/cookie_store.rb:106:in `call'     /usr/lib/ruby/gems/1.8/gems/actionpack-2.3.8/lib/action_controller/ failsafe.rb:26:in `call'     /usr/lib/ruby/1.8/rack/lock.rb:11:in `call'     /usr/lib/ruby/1.8/rack/lock.rb:11:in `synchronize'     /usr/lib/ruby/1.8/rack/lock.rb:11:in `call'     /usr/lib/ruby/gems/1.8/gems/actionpack-2.3.8/lib/action_controller/ dispatcher.rb:106:in `call'     /usr/lib/ruby/1.8/phusion_passenger/rack/request_handler.rb:92:in `process_request'     /usr/lib/ruby/1.8/phusion_passenger/abstract_request_handler.rb: 207:in `main_loop'     /usr/lib/ruby/1.8/phusion_passenger/railz/application_spawner.rb: 441:in `start_request_handler'     /usr/lib/ruby/1.8/phusion_passenger/railz/application_spawner.rb: 381:in `handle_spawn_application'     /usr/lib/ruby/1.8/phusion_passenger/utils.rb:252:in `safe_fork'     /usr/lib/ruby/1.8/phusion_passenger/railz/application_spawner.rb: 377:in `handle_spawn_application'     /usr/lib/ruby/1.8/phusion_passenger/abstract_server.rb:352:in `__send__'     /usr/lib/ruby/1.8/phusion_passenger/abstract_server.rb:352:in `main_loop'     /usr/lib/ruby/1.8/phusion_passenger/abstract_server.rb:196:in `start_synchronously'     /usr/lib/ruby/1.8/phusion_passenger/abstract_server.rb:163:in `start'     /usr/lib/ruby/1.8/phusion_passenger/railz/application_spawner.rb: 222:in `start'     /usr/lib/ruby/1.8/phusion_passenger/spawn_manager.rb:253:in `spawn_rails_application'     /usr/lib/ruby/1.8/phusion_passenger/abstract_server_collection.rb: 126:in `lookup_or_add'     /usr/lib/ruby/1.8/phusion_passenger/spawn_manager.rb:247:in `spawn_rails_application'     /usr/lib/ruby/1.8/phusion_passenger/abstract_server_collection.rb: 80:in `synchronize'     /usr/lib/ruby/1.8/phusion_passenger/abstract_server_collection.rb: 79:in `synchronize'     /usr/lib/ruby/1.8/phusion_passenger/spawn_manager.rb:246:in `spawn_rails_application'     /usr/lib/ruby/1.8/phusion_passenger/spawn_manager.rb:145:in `spawn_application'     /usr/lib/ruby/1.8/phusion_passenger/spawn_manager.rb:278:in `handle_spawn_application'     /usr/lib/ruby/1.8/phusion_passenger/abstract_server.rb:352:in `__send__'     /usr/lib/ruby/1.8/phusion_passenger/abstract_server.rb:352:in `main_loop'     /usr/lib/ruby/1.8/phusion_passenger/abstract_server.rb:196:in `start_synchronously'     /usr/lib/phusion_passenger/passenger-spawn-server:61

[3] has_attached_file :upload,                     :styles => { :thumb => { :geometry => "200x200>",                                            :format => :png }},                     :whiny => false

  validates_attachment_content_type :upload,                                       :content_type => ['image/jpeg',                                         'image/png',                                         'image/gif',                                         'image/pjpeg',                                         'image/x-png',                                         'image/jpeg2000',                                         'application/pdf'], :message => 'Uploaded file is not an image nor pdf'

hello,

i implementing a file upload using paperclip plugin. i getting the following error [1] when uploading a file. I'm using the gems rails v2.3.8 and paperclip v2.1.6. the parameter hash looks like [2], the model like [3].

Interesting is that i get two different errors, on the localhost with webrick it says:

Status: 500 Internal Server Error no marshal_dump is defined for class Proc /var/lib/gems/1.8/gems/activesupport-2.3.8/lib/active_support/ message_verifier.rb:38:in `dump'

on the server (same setup):

Status: 500 Internal Server Error can't dump File /usr/lib/ruby/gems/1.8/gems/activesupport-2.3.8/lib/active_support/ message_verifier.rb:38:in `dump'

any hints? thx

This sounds like your controller is putting something in the session which can't be serialized (such as a file or proc object)

Fred

thanx for the answer.

but how can i prevent the controller from doing so?

peter

Well that depends on what it's doing in the first place. If you post the relevant controller code someone might be able to help. If it's not in the action itself, look for any before/after filters that might be running. It might also be worth adding some code to print what is in the session - it might give you some clue as to what is putting it there

Fred

hi, thanks a lot for your answer!

the application is very simple. user registration with authlogic and file upload. [1] shows the FileUploadController. Authlogic creates a session object. a before filter looks if the user is logged in. [2] shows the UserSessionController.

I dont think its authlogic that dumps the file into the session, because i got the error since i tryed to implement a file upload (before i added user registration), and i got the same error from attachment_fu plugin. by the way the application is hosted on github:https://github.com/peonic/ichsehichseh is there a way to disable session store for a Controller. thx

[1] class UploadItemController < ApplicationController   before_filter :require_user

  def new     @user = current_user     @upload_item = UploadItem.new()     @story = @user.story.first   end

  def create     @upload_item = UploadItem.new(params[:upload_item])     @upload_item.story = current_user.story.first

    if @upload_item.save       flash[:notice] = "Upload completed"       redirect_to user_url(current_user)     else       flash[:error] = @upload_item.errors       render :action => new     end   end end

[2] class UserSessionsController < ApplicationController   before_filter :require_no_user, :only => [:new, :create]   before_filter :require_user, :only => :destroy

  def new     @user_session = UserSession.new   end

  def create     @user_session = UserSession.new(params[:user_session])     if @user_session.save       flash[:notice] = "Erfolgreich Eingeloggt"       redirect_to user_url(@user_session)     else       render :action => :new     end   end

  def destroy     current_user_session.destroy     redirect_to new_user_session_url   end

hi, thanks a lot for your answer!

the application is very simple. user registration with authlogic and file upload. [1] shows the FileUploadController. Authlogic creates a session object. a before filter looks if the user is logged in. [2] shows the UserSessionController.

I dont think its authlogic that dumps the file into the session, because i got the error since i tryed to implement a file upload (before i added user registration), and i got the same error from attachment_fu plugin. by the way the application is hosted on github:GitHub - peonic/ichsehichseh: file upload for the project ichsehichseh

Weird. The only thing I can think of is to stick a breakpoint where the exception is raised: if you can see what the offending object is, that might give you a clue

Fred

I had the same error .. ( see my recent post ... http://groups.google.com/group/rubyonrails-talk/browse_thread/thread/7e989c24581115a3/0812ebc44c574c17?hl=en&lnk=gst&q=can't+dump#0812ebc44c574c17 )

I solved the issue by clearing out the tempfile created.....

====== quote ====== Hi David I was re-running my test to output the trace , but I tested again another trick ... by trying to delete directly the upload tempfile attribute of the ActionDispatch::Http::UploadedFile created instance before the redirect_to ... params[:clip][:data].tempfile = nil redirect_to ... and it's running ... so params[:clip][:data] = nil or params[:clip] = nil is not enough ..

Problem SOLVED !!!

the error was cased in my UploadController when printing the ActiveRecord errors in the flash[:errors]. this made rails dump the hole object (including the file) in the error flash. this is one more reason to use the helper method <%= error_messages_for :my_controller %> instead of displaying it in a flash[:error]