突然,在我的第一个Rails应用程序中,我开始看到这个错误:
/!\ FAILSAFE /!\ Fri Sep 11 17:30:48 -0400 2009 Status: 500 Internal Server Error ActionController::Session::CookieStore::CookieOverflow
一些研究指出使用cookie来存储会话数据,但我没有这样做(至少不是故意的).而且,这才刚刚开始发生.我今天开始工作的唯一一件事就是能够上传一个zip文件.我正在尝试用于测试的zip文件是1.1MB.
此外,Firebug仅显示此域的2个cookie.名为_html_session
507B,名为user_credentials
147B.上传的文件是否以一种大文件可能导致这种情况的方式临时存储?上传单个图像效果很好.
谢谢你的帮助.
更新:哎呀.与我对下面的Vitaly和xijo的评论相反,错误不是很明显.在这种情况下,我正在将某些内容上传到我的Image
模型中,并且在我的ImagesController
调用时发生错误@image.save!
.
有趣的是,我仍然不太明白错误发生在哪里.我创建了一个Image#before_validation
方法并在那里引发异常,但CookieOverflow错误发生在我到达那里之前.在控制器进行保存调用之后和特定回调之前,是否有任何地方可以删除代码?我的理解是,这before_validation
是第一次回调.
如果您尝试存储flash[:notice] = 'blah'
太长的消息,则很容易发生这种情况,因为该消息存储在会话cookie中.
我今天遇到了类似的问题.显然,Rails会话只能存储4k的数据.一种可能的解决方案是为会话使用数据库存储.
去做这个:
添加
config.action_controller.session_store = :active_record_store
到您的environment.rb
文件中.
使用创建会话的迁移文件 rake db:sessions:create
运行迁移 rake db:migrate
希望这可以帮助