таинственная ошибка рельсов почти без следа


У нас возникла странная проблема с одним краулером. Иногда он выдает ошибку Rails FATAL по какому-либо запросу, но трассировка очень ограничена и выглядит примерно так

[2014-07-01 18:16:37] FATAL Rails :
ArgumentError (invalid %-encoding (c ^   FK+ 9u$_    t  Kl
ΥE!   =k   ̕* >c+<O   یo ʘ> C     R! 2 D  (5      x q#!` 4 p      |8 I   E
:+   H^9`^ #    Vo{   >

  =[z     )):
  lib/locale_middleware.rb:14:in `call'

Пользователь-агент искателя-это

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

Мы можем попросить его прекратить обход нас через robots.txt, но было бы лучше разобраться с первопричиной и не ошибиться с 500 по этим запросам, если это возможно.

На самом деле мы не можем воспроизвести такой запрос, поэтому любые предложения о том, как это сделать генерировать подобный запрос было бы очень полезно.

Мы используем Rails 3.2.19, Unicorn на Ubuntu 12.04. Вот наш locale_middleware.rb

1 7

1 ответ:

Особая благодарность Бенджамину Синклеру за указание наПравильный вопрос на github .

Решение было описано на этом Комментарии :

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