对于这个魔幻的语言,调试花了我不少力气。
这个bug 只 在windows控制台下才出现,在linux下没问题。
一个好好的登陆post,成功后本应跳转的,控制台也打出302和跳转地址,可浏览器不跳转,报错。
用http sniffer工具看了一下,只有post没有回应数据。
一点点的查源码,发现mongrel拦了个异常,确没有打印一下,害人不浅啊。
最后查出是LogTailer类的tail!方法出现问题,print时有异常抛出,但被mongrel给接了,导致这个连接就这样结束了。
hack一下lib/hack_log_tailer.rb
module Rails
module Rack
class LogTailer
def tail!
@file.seek @cursor
if !@file.eof?
contents = @file.read
@cursor = @file.tell
$stdout.print contents rescue nil
end
end
end
end
end
问题解决,
主要问题出在utf8字串上,windows console为gbk,强制打出来,可能出现异常,再底层的有兴趣的可以再跟进去看看。