Ruby on rails 4 Rails 4.2:内部服务器错误,内容中已达到最大文件多部分

Ruby on rails 4 Rails 4.2:内部服务器错误,内容中已达到最大文件多部分,ruby-on-rails-4,Ruby On Rails 4,刚升级到Rails 4.2,我在本地主机和生产环境中尝试编辑具有多个has_多个对象的模型时遇到内部服务器错误。这是我在rails控制台上看到的消息 !! Unexpected error while processing request: Too many open files - Maximum file multiparts in content reached Started GET "/feeds/3/edit" for 127.0.0.1 at 2015-01-04 20:07:1

刚升级到Rails 4.2,我在本地主机和生产环境中尝试编辑具有多个has_多个对象的模型时遇到内部服务器错误。这是我在rails控制台上看到的消息

!! Unexpected error while processing request: Too many open files - Maximum file multiparts in content reached
Started GET "/feeds/3/edit" for 127.0.0.1 at 2015-01-04 20:07:19 -0800
Processing by FeedsController#edit as HTML
......
......
请求甚至没有到达控制器,也就是说,我在rails的控制台中没有看到通常的以下行

!! Unexpected error while processing request: Too many open files - Maximum file multiparts in content reached
Started GET "/feeds/3/edit" for 127.0.0.1 at 2015-01-04 20:07:19 -0800
Processing by FeedsController#edit as HTML
......
......

有什么线索吗??使用Ruby 2.1.5升级到2.2并不幸运。

看起来Rails 4.2版本的Rack()中增加了多部分限制。默认值是128,这对你来说可能太小了,这是我的。将初始值设定项中的值设置为0将删除限制并修复问题:

Rack::Utils.multipart_part_limit = 0

我建议对该值进行裁剪,直到它符合您的需要,这样您的服务器就不会耗尽文件句柄。我的应用程序使用了一个巨大的表单,将其设置为512似乎对我有效。

您还可以向应用程序传递一个环境变量,如您在此处看到的()


RACK\u MULTIPART\u PART\u LIMIT=0 rails服务器

RACK 1.6中似乎存在一个漏洞,所有HTML输入元素都被计算为多部分表单中打开的文件。正如其他人所指出的,您可以将限制更改为0以禁用该功能,或者取消限制


同样的道理,Rails 4.2.0和Ruby 2.2.0.Rack 1.6.4包含了一个修复程序。谢谢Craig。将测试并标记您的答案是否有效。我确实有一个很长的表格。较短的表单可以很好地工作。在我们看来,引入的补丁程序似乎是将每个表单元素计算为一个打开的文件,而不仅仅是文件。因此,如果你有一个嵌套表单,你很快就会用完“文件”。似乎是一个坏补丁。Rack 1.6.1不包含此修复程序。看起来这将出现在1.7版本中:(Rack 1.6.4包含对此的修复。@JigarBhatt我将其放在config.ru中以供参考,但您应该同时设置
Rack\u MULTIPART\u PART\u LIMIT
Rack\u MULTIPART\u LIMIT
,因为代码注释Rack\u MULTIPART\u LIMIT是错误引入的,它将在1.7.0中删除。我面临着同样的问题,我可以在哪里放置此line?@JigarBhatt您可以在执行脚本的行上设置此env变量。例如:
RACK\u MULTIPART\u PART\u LIMIT=0 ruby app.rb
或者您可以导出变量,然后运行脚本。
export RACK\u MULTIPART\u PART\u LIMIT=0
然后
ruby app.rb
这已合并到1.6.4中,它出现了