Rails 4.2:内部服务器错误,内容达到最大文件多部分

刚刚升级到Rails 4.2,并且在尝试编辑具有多个has_many对象的模型时,在本地主机和生产环境中出现内部服务器错误。 这是我在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没有运气。

看起来在Rack的Rails 4.2版本中添加了多部分限制( https://github.com/rack/rack/commit/b0b5fb9467e6ed777d3eaf35afc81d758e308aab )。 默认值是128,对您而言可能太less了,这是为我的。 在初始化程序中将该值设置为0将删除限制并修复问题:

 Rack::Utils.multipart_part_limit = 0 

我会build议剪裁的价值,直到它适合您的需求,使您的服务器不会用完文件句柄。 我的应用程序使用一个巨大的forms,并将其设置为512似乎为我工作。

您也可以将环境variables传递给应用程序,如您所见( https://github.com/rack/rack/blob/8d21788798b521b97beb10047ebf593ddc0aaed2/lib/rack/utils.rb#L75 )。

RACK_MULTIPART_PART_LIMIT=0 rails server

看起来机架1.6中存在一个错误,其中所有HTMLinput元素都以多部分forms计算为打开的文件。 正如其他人指出的那样,您可以将限制更改为0以禁用该function,或者限制该限制。

https://github.com/rack/rack/pull/814