博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Ruby on Rails调试经验分享
阅读量:4040 次
发布时间:2019-05-24

本文共 1352 字,大约阅读时间需要 4 分钟。

首先,而且也是最重要的就是,编写测试代码,在Rails里编写单元测试和功能测试都很简单,使用它们,可以减低bug发生率,也可以避免在你从前的代码中突然出现bug。

测试代码告诉你哪些东西能够工作,哪些不能,并且,测试代码帮助你隔离那些有问题的代码,因为有时候bug并非很快地表现出来。

如果Ruby on Rails调试问题发生在一个Model中,我们可以使用脚本script/console来模拟一个irb对话,在其中进行跟踪,例如下面这样:

Z:studyrubyInstantRailsrails_appsdepot>ruby script/console   
Loading development environment.  
>> pr = Product.find(:first)  
=> #
"http://www.dearbook.com.  
>> pr.price 
=> #
 
>> 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()能帮助我们,该Ruby on Rails调试方法很好的格式化对象的内容,并且判断对象的内容是不是合法的HTML,例如:

Your Order

 
<%= debug(@order) %> 
 
. . .  
 

最后,在上面的Ruby on Rails调试方法都不能排除bug的时候,我们来尝试跟踪调试程序,但是只限于环境配置为development的程序,

下面是使用断点(breakpoint)的步骤:

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

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

打开浏览器,使你的程序能够命中调用breakpoint方法的代码,这时候浏览器会停止响应,在命令行窗口会打开irb会话,在这里,你可以查看变量的值,或者添加断点,当你推出irb会话,在浏览器里,程序就会继续运行。

转载地址:http://zcadi.baihongyu.com/

你可能感兴趣的文章
01Java基础语法-13. if分支语句的灵活使用
查看>>
01Java基础语法-15.for循环结构
查看>>
01Java基础语法-16. while循环结构
查看>>
01Java基础语法-17. do..while循环结构
查看>>
01Java基础语法-18. 各种循环语句的区别和应用场景
查看>>
01Java基础语法-19. 循环跳转控制语句
查看>>
Django框架全面讲解 -- Form
查看>>
socket,accept函数解析
查看>>
今日互联网关注(写在清明节后):每天都有值得关注的大变化
查看>>
”舍得“大法:把自己的优点当缺点倒出去
查看>>
[今日关注]鼓吹“互联网泡沫,到底为了什么”
查看>>
[互联网学习]如何提高网站的GooglePR值
查看>>
[关注大学生]求职不可不知——怎样的大学生不受欢迎
查看>>
[关注大学生]读“贫困大学生的自白”
查看>>
[互联网关注]李开复教大学生回答如何学好编程
查看>>
[关注大学生]李开复给中国计算机系大学生的7点建议
查看>>
[关注大学生]大学毕业生择业:是当"鸡头"还是"凤尾"?
查看>>
[茶余饭后]10大毕业生必听得歌曲
查看>>
gdb调试命令的三种调试方式和简单命令介绍
查看>>
C++程序员的几种境界
查看>>