所属类别:开发技术
文章作者:fsjoy1983
特别推荐:免费发布信息 承包关键词~~抢爆了!HOT!
版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://fsjoy.blog.51cto.com/318484/115633断点是调试中一个很重要的方式,使用断点可以暂停正在执行的动作,检查甚至是修改其中的变量,然后恢复执行。绝对是调试工作的利器!下面来看看怎么使用断点。假定,我们正在开发的应用中,有一个message资源,它被show这个action的模板调用。在浏览器中载入show这个模板,很不幸, rails抛出了一个异常:NoMethodError in Messages#showundefined method 'title' for #也不知道为什么会出错,我们决定使用断点来寻找问题的原因。切换到controller中,在show方法中加入断点命令:def show@post = Message.find params[:id]breakpointend保存之后,切回到浏览器,刷新一下。浏览器开始加载页面,但是不会结束。当rails遇到断点声明的时候,停止执行action并且允许你在show方法中输入控制台会话。新建一个控制台,使用script/breakpointer命令进入断点,就像使用script/console命令一样。结果应该是这样:$ script/breakpointerExecuting break point at script/../config/../app/controllers/messages_controller.rb:20 in 'show'irb(#):001:0>上面给出的提示信息告诉你,断点所处的位置。使用instance_variables方法返回一个在目前环境中可用的实例变量组成的数组:irb(#):004:0> instance_variables=> ["@post", "@headers", "@performed_redirect", "@flash", "@request","@__bp_file", "@assigns", "@action_name", "@params", "@current_user","@session", "@template", "@cookies", "@__bp_line", "@request_origin","@performed_render", "@variables_added", "@response", "@url", "@before_filter_chain_aborted"]当然,你也可以通过其他的方法来得到一些在目前环境下可用的内容,譬如params:irb(#):001:0> params=> {"action"=>"show", "id"=>"7", "controller"=>"messages"}因为断点是在实例变量@post被定义之后被调用的,所以你可以检查一下@post的内容:irb(#):002:0> @post=> #"Untitled Message","body"=>"","id"=>"7", "created_at"=>"2006-07-06 21:02:48"}>而且,为了更清晰的看到引发错误的原因,可以进一步查看@post对应的模型类有那些属性:irb(#):003:0> @post.attributes.keys=> ["name", "body", "id", "created_at"]断点也可以在试图中使用:只要将<% breakpoint %>添加视图模板文件的需要位置即可。当你调试检查出错误所在之处,并且修正了之后,在使用断点会话的控制台中输入exit命令,action会继续从断点往下执行,并且会给浏览器发送响应。7.1.4. Inspectors调试的核心目标是清晰化:看到系统中对象的隐藏属性。到目前为止,我们已经介绍了两种可以实现这个目标的手段,日志和控制台。现在我们来看看第三种工具,监测器。一些监测器是rails内建的,也有第三方的rails插件,还有加载到客户端浏览器的。所有的这些都应该在rails开发者的工具箱中。本文出自 51CTO.COM技术博客
相关信息· 循序渐进学习LINUX之文件目录结构
· 生产者消费者问题
· 玩转主板 寄存器修改介绍
· 无费用搭建属于自己的网站
1312
87460
