几乎没有踪迹的神秘铁轨错误

我们遇到了一个爬行器的奇怪问题。 有时它会在某些请求中抛出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个请求中失败。

我们也无法真正复制这种请求,因此对如何产生类似请求的任何建议都会有很大的帮助。

我们在Ubuntu 12.04上使用Rails 3.2.19,Unicorn。 这是我们的locale_middleware.rb


特别感谢Benjamin Sinclaire指出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
    
    链接地址: http://www.djcxy.com/p/80305.html

    上一篇: mysterious rails error with almost no trace

    下一篇: Aligning li text that wraps when using custom bullet point