Error de Rails misteriosos casi sin rastro

Estamos teniendo un problema extraño con un rastreador. Ocasionalmente lanzará un error Rails FATAL en alguna solicitud, pero el rastreo es muy limitado y se parece a esto

 [2014-07-01 18:16:37] FATAL Rails : ArgumentError (invalid %-encoding (c ^ FK+ 9u$_ t Kl ΥE! =k \ ̕* ߚ>c+ CR! 2 D (5 xq#!` 4 p |8 IE :+ H^9`^ # Vo{ > =[z )): lib/locale_middleware.rb:14:in `call' 

El agente de usuario del rastreador es

Mozilla/5.0 (compatible; EasouSpider; +http://www.easou.com/search/spider.html)

Podemos pedirle que deje de rastrearnos a través de robots.txt , pero sería mejor tratar con la causa raíz y no fallar con 500 en esas solicitudes si es posible.

Tampoco podemos reproducir este tipo de solicitud, por lo que cualquier sugerencia sobre cómo generar una solicitud similar sería de gran ayuda.

Estamos usando Rails 3.2.19, Unicorn en Ubuntu 12.04. Aquí está nuestro locale_middleware.rb

Un agradecimiento especial a Benjamin Sinclair por señalar el tema correcto en github .

La solución fue descrita en este comentario :

  • Instalar la gem de robustez de rack
  • agrega esto a application.rb :
 config.middleware.use ::Rack::Robustness do |g| g.no_catch_all g.on(ArgumentError) { |ex| 400 } g.content_type 'text/plain' g.body{ |ex| ex.message } g.ensure(true) { |ex| env['rack.errors'].write(ex.message) } end