таинственная ошибка рельсов почти без следа
У нас возникла странная проблема с одним краулером. Иногда он выдает ошибку 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 ответ:
Особая благодарность Бенджамину Синклеру за указание наПравильный вопрос на github .
Решение было описано на этом Комментарии :
- установите стойкость стойки драгоценный камень
- добавьте это к
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