Rails 4.2, Thin et "Internal server error"

Un récent appel à une application développée avec Rails 4.2, et servie par Thin, m'a conduit à une erreur "500 Internal Server Error" dont je ne trouvais de trace dans aucun log de l'application, et aucun log pertinent pour le "load balancer" (pound) placé frontalement au-dessus de cette application.

Le plus étrange était de ne voir aucune trace dans les logs de Rails et notamment de ne voir aucune confirmation de la bonne réception de la requête par l'application Rails.

Après avoir exploré, ad nauseum, tous les potentiels blocages en amont de l'application Rails, j'ai fini par remplacer Thin par Webrick pour servir l'application : et là miracle, un message d'erreur plus explicite m'a été retourné en lieu et place de l'erreur 500 : "Unexpected error while processing request: Too many open files - Maximum file multiparts in content reached".

J'ai alors trouvé cette référence : http://stackoverflow.com/questions/27773368/rails-4-2-internal-server-error-with-maximum-file-multiparts-in-content-reached et celle-ci : https://github.com/rack/rack/pull/814

La première propose de contourner le problème en désactivant la limite sur le nombre d'éléments multipart en ajoutant cette ligne dans un fichier d'initialisation :

Rack::Utils.multipart_part_limit = 0

La seconde référence étudie la raison de ce comportement avec une mauvaise approche du comptage des balises dans le formulaire : "However, our form only had one file input. It had several hundred other form elements. Each was counted as a file.". Le commit en faute a été repéré et cela devrait être corrigé dans la prochaine version de Rails/Rake !