Reputation: 1116
Just upgraded to Rails 4.2 and I get Internal Server Error on localhost and in production when trying to edit a model with multiple has_many objects. This is the message I see on the rails s console
!! Unexpected error while processing request: Too many open files - Maximum file multiparts in content reached
The request does not even get to the controller i.e., I DO NOT see the usual following lines in rails s console
Started GET "/feeds/3/edit" for 127.0.0.1 at 2015-01-04 20:07:19 -0800
Processing by FeedsController#edit as HTML
......
......
Any clues?? Using Ruby 2.1.5 upgraded to 2.2 with no luck.
Upvotes: 47
Views: 8178
Reputation: 424
In Rails > 6 you will need to use multipart_total_part_limit instead of multipart_part_limit.
Rack::Utils.multipart_total_part_limit = 0
Upvotes: 2
Reputation: 1504
You can also pass a Environment variable to the app, as you can see here(https://github.com/rack/rack/blob/8d21788798b521b97beb10047ebf593ddc0aaed2/lib/rack/utils.rb#L75).
RACK_MULTIPART_PART_LIMIT=0 rails server
Upvotes: 16
Reputation: 8257
It looks like there is a bug in Rack 1.6 where all HTML input elements get counted as an open file in a multipart form. As others point out, you can change the limit to 0 to disable the feature, or bump the limit.
https://github.com/rack/rack/pull/814
Upvotes: 6
Reputation: 1036
It looks like the multipart limit was added in the Rails 4.2 version of Rack (https://github.com/rack/rack/commit/b0b5fb9467e6ed777d3eaf35afc81d758e308aab). The default is 128, which may be too little for your purposes, it was for mine. Setting the value to 0 in an initializer removes the limit and fixes the problem:
Rack::Utils.multipart_part_limit = 0
I would suggest tailoring the value until it fits your needs so your server doesn't run out of file handles. My app uses a massive form and setting it to 512 seemed to work for me.
Upvotes: 75