Rails 4.2: Внутренняя ошибка сервера с максимальным количеством файлов в контенте
Просто обновлен до Rails 4.2, и я получаю внутреннюю ошибку сервера на локальном хосте и в процессе производства при попытке редактировать модель с несколькими объектами has_many. Это сообщение, которое я вижу на консоли rails s
!! Unexpected error while processing request: Too many open files - Maximum file multiparts in content reached
Запрос даже не попадает на контроллер, то есть я НЕ вижу обычные строки в консоли rails
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 без ведома.
Ответы
Ответ 1
Похоже, что множественный лимит был добавлен в Rails 4.2 версии Rack (https://github.com/rack/rack/commit/b0b5fb9467e6ed777d3eaf35afc81d758e308aab). Значение по умолчанию - 128, что может быть слишком мало для ваших целей, это было для меня. Установка значения в 0 в инициализаторе устраняет предел и устраняет проблему:
Rack::Utils.multipart_part_limit = 0
Я бы предложил настроить значение до тех пор, пока оно не будет соответствовать вашим потребностям, чтобы на вашем сервере не хватало файлов. Мое приложение использует массивную форму, и настройка его на 512, похоже, сработала для меня.
Ответ 2
Вы также можете передать переменную среды в приложение, как вы можете видеть здесь (https://github.com/rack/rack/blob/8d21788798b521b97beb10047ebf593ddc0aaed2/lib/rack/utils.rb#L75).
RACK_MULTIPART_PART_LIMIT=0 rails server
Ответ 3
Похоже, в Rack 1.6 есть ошибка, в которой все элементы ввода HTML считаются открытым файлом в многострочной форме. Как отмечают другие, вы можете изменить предел на 0, чтобы отключить функцию, или уменьшить предел.
https://github.com/rack/rack/pull/814