乐者为王

Do one thing, and do it well.

Ruby调试工具概览

调试Ruby代码最简单的方式就是使用puts或p方法。当有很多变量需要查看时,到处添加puts或p方法就可能变的不那么实际。幸好,Ruby社区提供了许多强大的调试工具。

Ruby 1.8+时代

调试Ruby代码使用ruby-debug。调试Rails代码则是pry-nav。不过在Ruby 1.9出来后ruby-debug就有问题了,于是就有了ruby-debug19,一个针对Ruby 1.9的ruby-debug移植版本。

Ruby 1.9.2+时代

等到Ruby 1.9.2发布,ruby-debug彻底歇菜,然后debugger就出现了。pry-nav也不好使了,还好有pry-debugger

Ruby 2+时代

新的Ruby调试工具byebug来了。虽然byebug也能调试Rails应用,但它不提供语法高亮,所以使用pry-byebug是个更好的选择。

Ruby 1.8+ Ruby 1.9 Ruby 1.9.2+ Ruby 2+
Ruby ruby-debug ruby-debug19 debugger byebug
Rails pry-nav pry-nav pry-debugger pry-byebug

其它

Pry其实不是纯粹的调试工具,它只是IRB的替代品,所以缺乏必要的调试指令。pry-nav、pry-debugger和pry-byebug做的只是分别把ruby-debug、debugger和byebug中的step、next、continue等指令添加到Pry中。

  • pry-nav = Pry + ruby-debug
  • pry-debugger = Pry + debugger
  • pry-byebug = Pry + byebug

如果要调试view怎么办?可以使用Web Console。在view里面加上<%= console %>,当view出现异常时,就会在异常界面下方,出现一个网页版的IRB,方便调试。Web Console默认只接受localhost的请求,假如需要让别的IP也能访问的话,可以这样做:

1
2
3
class Application < Rails::Application
  config.web_console.whitelisted_ips = '192.168.0.100'
end

Comments