• Ruby on rails开发从头来(windows)(三十六) 调试技巧


     这次我们来看看一些关于调试的小提示。

    首先,而且也是最重要的就是,编写测试代码,在Rails里编写单元测试和功能测试都很简单,使用它们,可以减低bug发生率,也可以避免在你从前的代码中突然出现bug
    测试代码告诉你哪些东西能够工作,哪些不能,并且,测试代码帮助你隔离那些有问题的代码,因为有时候bug并非很快地表现出来。
    如果问题发生在一个Model中,我们可以使用脚本script/console来模拟一个irb对话,在其中进行跟踪,例如下面这样:

    Z:\study\ruby\InstantRails\rails_apps\depot>ruby script/console

    Loading development environment.

    >> pr = Product.find(:first)

    => #<Product:0x4b969ec @attributes={"image_url"=>"http://www.dearbook.com.

    >> pr.price

    => #<BigDecimal:4b913d4,'0.12351E3',8(12)>

    >> pr.image_url

    => "http://www.dearbook.com.cn/book/BookImage/67/lastTS00168921__.jpg"

    >> pr.save

    => true

    >> 
    我们先在depot项目的命令行中使用ruby script/console来启动irb会话,蓝色的部分是我在irb会话中输入的命令。

     

    另外,在复杂的程序中使用Log也是一个好办法,你可以在log文件中找到大量有价值的信息,当一些意外情况发生,Log文件应该是你第一个要检查的地方。还有,检查服务器的log文件也是很有用的,如果你使用WEBrick作为web服务器,也可以使用脚本script/server来启动一个会话。

    我们可以使用Logger对象来输出我们想查看的信息,有时候log文件非常繁忙,以至于很难找到你所添加的log,如果你使用WEBrick,你可以使用STDERR来将你的log输出到控制台上(InstantRails使用的Mongrel不能进入命令行)。

    如果一个页面显示了错误的内容,我们也许想导出控制器中的对象,方法debug()能帮助我们,该方法很好的格式化对象的内容,并且判断对象的内容是不是合法的HTML,例如:

    <h3>Your Order</h3>

    <%= debug(@order) %>

    <div id="ordersummary">

    . . .

    </div>

     

    最后,在上面的方法都不能排除bug的时候,我们来尝试跟踪调试程序,但是只限于环境配置为development的程序,下面是使用断点(breakpoint)的步骤:

    1.       在你需要程序停下来的地方添加breakpoint()方法的调用。

    2.       在项目的根目录键入命令:depot>ruby script/breakpointer

    打开浏览器,使你的程序能够命中调用breakpoint方法的代码,这时候浏览器会停止响应,在命令行窗口会打开irb会话,在这里,你可以查看变量的值,或者添加断点,当你推出irb会话,在浏览器里,程序就会继续运行。
  • 相关阅读:
    FFmpeg软件只是个解码编码软件,如果支持多种格式必须先安装好对应的库,下面就说下我装的库
    在Centos 6.5 X64下切割m3u8
    扩展自己的数组核心库
    关于小周同志在消息模块定位功能修改时存在的问题分析
    比对两个Word文件内容是否一致的C#解决办法
    如何实现artTemplate模板的可重用性,以此框架打造自己的自定义组件
    稍微谈一下 javascript 开发中的 MVC 模式
    Node.js 函数
    Node.js模块系统
    Node.js Stream(流)
  • 原文地址:https://www.cnblogs.com/dahuzizyd/p/ruby_rails_study_36.html
Copyright © 2020-2023  润新知