Ruby on Rails调试经验分享
创始人
2024-06-16 06:01:03
0

Ruby on Rails作为一款非常实用的WEB开发框架帮助我们实现了快速方便的编写代码的需求。下面就为大家介绍一下关于Ruby on Rails调试的一些经验之谈。#t#

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

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

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

  1. Z:studyrubyInstantRailsrails_appsdepot>
    ruby script/console  
  2. Loading development environment.  
  3. >> pr = Product.find(:first)  
  4. => #{"image_url"=>"http://www.dearbook.com.  
  5. >> pr.price 
  6. => # 
  7. >> pr.image_url 
  8. => "http://www.dearbook.com.cn/book/
    BookImage/67/lastTS00168921__.jpg"  
  9. >> pr.save 
  10. => true  
  11. >> 

我们先在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,例如:

 

  1. Your Order

     
  2. <%= debug(@order) %> 
  3.  
  4. . . .  
 

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

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

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

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

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
Windows恶意软件20年“... 在Windows的早期年代,病毒游走于系统之间,偶尔删除文件(但被删除的文件几乎都是可恢复的),并弹...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...
《非诚勿扰》红人闫凤娇被曝厕所... 【51CTO.com 综合消息360安全专家提醒说,“闫凤娇”、“非诚勿扰”已经被黑客盯上成为了“木...