"can't dump File" error

Hi all,

I'm using attachment_fu to upload files using a pretty standard configuration, and have come across the following error. When I upload a file (fill in a form and submit to a "create" action), I get the error:

TypeError (can't dump File):

The browser then renders:

Status: 500 Internal Server Error   can't dump File

The upload code still works successfully, and the photos are shown when the page is reloaded. I'm not sure, but I think this may be related to changing session storage from the default come across this issue?

Many thanks, Adam

TypeError (can't dump File):     /var/lib/gems/1.8/gems/actionpack-2.0.2/lib/action_controller/ session/active_record_store.rb:83:in `dump'     /var/lib/gems/1.8/gems/actionpack-2.0.2/lib/action_controller/ session/active_record_store.rb:83:in `marshal'     /var/lib/gems/1.8/gems/actionpack-2.0.2/lib/action_controller/ session/active_record_store.rb:136:in `marshal_data!'     /var/lib/gems/1.8/gems/activerecord-2.0.2/lib/active_record/ callbacks.rb:307:in `send'     /var/lib/gems/1.8/gems/activerecord-2.0.2/lib/active_record/ callbacks.rb:307:in `callback'     /var/lib/gems/1.8/gems/activerecord-2.0.2/lib/active_record/ callbacks.rb:304:in `each'     /var/lib/gems/1.8/gems/activerecord-2.0.2/lib/active_record/ callbacks.rb:304:in `callback'     /var/lib/gems/1.8/gems/activerecord-2.0.2/lib/active_record/ callbacks.rb:212:in `create_or_update'     /var/lib/gems/1.8/gems/activerecord-2.0.2/lib/active_record/ base.rb:1972:in `save_without_validation'     /var/lib/gems/1.8/gems/activerecord-2.0.2/lib/active_record/ validations.rb:934:in `save_without_transactions'     /var/lib/gems/1.8/gems/activerecord-2.0.2/lib/active_record/ transactions.rb:108:in `save'     /var/lib/gems/1.8/gems/activerecord-2.0.2/lib/active_record/ connection_adapters/abstract/database_statements.rb:66:in `transaction'     /var/lib/gems/1.8/gems/activerecord-2.0.2/lib/active_record/ transactions.rb:80:in `transaction'     /var/lib/gems/1.8/gems/activerecord-2.0.2/lib/active_record/ transactions.rb:100:in `transaction'     /var/lib/gems/1.8/gems/activerecord-2.0.2/lib/active_record/ transactions.rb:108:in `save'     /var/lib/gems/1.8/gems/activerecord-2.0.2/lib/active_record/ transactions.rb:120:in `rollback_active_record_state!'     /var/lib/gems/1.8/gems/activerecord-2.0.2/lib/active_record/ transactions.rb:108:in `save'     /var/lib/gems/1.8/gems/actionpack-2.0.2/lib/action_controller/ session/active_record_store.rb:310:in `update'     /var/lib/gems/1.8/gems/activerecord-2.0.2/lib/active_record/ base.rb:1198:in `silence'     /var/lib/gems/1.8/gems/actionpack-2.0.2/lib/action_controller/ session/active_record_store.rb:310:in `update'     /var/lib/gems/1.8/gems/actionpack-2.0.2/lib/action_controller/ session/active_record_store.rb:317:in `close'     /usr/lib/ruby/1.8/cgi/session.rb:324:in `close'     /var/lib/gems/1.8/gems/actionpack-2.0.2/lib/action_controller/ base.rb:1247:in `close_session'     /var/lib/gems/1.8/gems/actionpack-2.0.2/lib/action_controller/ base.rb:1292:in `process_cleanup_without_flash'     /var/lib/gems/1.8/gems/actionpack-2.0.2/lib/action_controller/ flash.rb:173:in `process_cleanup_without_session_management_support'     /var/lib/gems/1.8/gems/actionpack-2.0.2/lib/action_controller/ session_management.rb:133:in `process_cleanup_without_components'     /var/lib/gems/1.8/gems/actionpack-2.0.2/lib/action_controller/ components.rb:161:in `process_cleanup'     /var/lib/gems/1.8/gems/actionpack-2.0.2/lib/action_controller/ base.rb:532:in `process_without_filters'     /var/lib/gems/1.8/gems/actionpack-2.0.2/lib/action_controller/ filters.rb:685:in `process_without_session_management_support'     /var/lib/gems/1.8/gems/actionpack-2.0.2/lib/action_controller/ session_management.rb:123:in `process'     /var/lib/gems/1.8/gems/actionpack-2.0.2/lib/action_controller/ base.rb:388:in `process'     /var/lib/gems/1.8/gems/actionpack-2.0.2/lib/action_controller/ dispatcher.rb:171:in `handle_request'     /var/lib/gems/1.8/gems/actionpack-2.0.2/lib/action_controller/ dispatcher.rb:115:in `dispatch'     /var/lib/gems/1.8/gems/actionpack-2.0.2/lib/action_controller/ dispatcher.rb:126:in `dispatch_cgi'     /var/lib/gems/1.8/gems/actionpack-2.0.2/lib/action_controller/ dispatcher.rb:9:in `dispatch'     /var/lib/gems/1.8/gems/mongrel-1.1.3/bin/../lib/mongrel/rails.rb: 76:in `process'     /var/lib/gems/1.8/gems/mongrel-1.1.3/bin/../lib/mongrel/rails.rb: 74:in `synchronize'     /var/lib/gems/1.8/gems/mongrel-1.1.3/bin/../lib/mongrel/rails.rb: 74:in `process'     /var/lib/gems/1.8/gems/mongrel-1.1.3/lib/mongrel.rb:159:in `process_client'     /var/lib/gems/1.8/gems/mongrel-1.1.3/lib/mongrel.rb:158:in `each'     /var/lib/gems/1.8/gems/mongrel-1.1.3/lib/mongrel.rb:158:in `process_client'     /var/lib/gems/1.8/gems/mongrel-1.1.3/lib/mongrel.rb:285:in `run'     /var/lib/gems/1.8/gems/mongrel-1.1.3/lib/mongrel.rb:285:in `initialize'     /var/lib/gems/1.8/gems/mongrel-1.1.3/lib/mongrel.rb:285:in `new'     /var/lib/gems/1.8/gems/mongrel-1.1.3/lib/mongrel.rb:285:in `run'     /var/lib/gems/1.8/gems/mongrel-1.1.3/lib/mongrel.rb:268:in `initialize'     /var/lib/gems/1.8/gems/mongrel-1.1.3/lib/mongrel.rb:268:in `new'     /var/lib/gems/1.8/gems/mongrel-1.1.3/lib/mongrel.rb:268:in `run'     /var/lib/gems/1.8/gems/mongrel-1.1.3/lib/mongrel/configurator.rb: 282:in `run'     /var/lib/gems/1.8/gems/mongrel-1.1.3/lib/mongrel/configurator.rb: 281:in `each'     /var/lib/gems/1.8/gems/mongrel-1.1.3/lib/mongrel/configurator.rb: 281:in `run'     /var/lib/gems/1.8/gems/mongrel-1.1.3/bin/mongrel_rails:128:in `run'     /var/lib/gems/1.8/gems/mongrel-1.1.3/lib/mongrel/command.rb:212:in `run'     /var/lib/gems/1.8/gems/mongrel-1.1.3/bin/mongrel_rails:281     /var/lib/gems/1.8/gems/activesupport-2.0.2/lib/active_support/ dependencies.rb:489:in `load'     /var/lib/gems/1.8/gems/activesupport-2.0.2/lib/active_support/ dependencies.rb:489:in `load'     /var/lib/gems/1.8/gems/activesupport-2.0.2/lib/active_support/ dependencies.rb:342:in `new_constants_in'     /var/lib/gems/1.8/gems/activesupport-2.0.2/lib/active_support/ dependencies.rb:489:in `load'     /var/lib/gems/1.8/gems/rails-2.0.2/lib/commands/servers/mongrel.rb: 64     /usr/lib/ruby/1.8/rubygems/custom_require.rb:27:in `gem_original_require'     /usr/lib/ruby/1.8/rubygems/custom_require.rb:27:in `require'     /var/lib/gems/1.8/gems/activesupport-2.0.2/lib/active_support/ dependencies.rb:496:in `require'     /var/lib/gems/1.8/gems/activesupport-2.0.2/lib/active_support/ dependencies.rb:342:in `new_constants_in'     /var/lib/gems/1.8/gems/activesupport-2.0.2/lib/active_support/ dependencies.rb:496:in `require'     /var/lib/gems/1.8/gems/rails-2.0.2/lib/commands/server.rb:39     /usr/lib/ruby/1.8/rubygems/custom_require.rb:27:in `gem_original_require'     /usr/lib/ruby/1.8/rubygems/custom_require.rb:27:in `require'     ./script/server:3     -e:2:in `load'     -e:2

I'm getting the same thing with the memcache session and another person(in another thread) has had this problem as well. Mike Kohout

Hi Michael,

I found a solution to this. The problem was that I was trying to store the params hash in either the flash or session hash (I forget which), with the idea that I could use this information to redirect the user in a particular way. However, when I uploaded a file, the params hash would include a File object (e.g. :filedata => <#FileXXX>. You can't store a File object in the session storage, hence the error.

Hope this helps, Adam

hmm...I was getting this behavior from regular ol attachment_fu. To solve it, I just rolled my own file code.

But thanks for the update!

Michael Kohout wrote in post #693402:

hmm...I was getting this behavior from regular ol attachment_fu. To solve it, I just rolled my own file code.

But thanks for the update!

Pls can you describe how you got around this issue?

Thanks. Taiwo