`
hideto
  • 浏览: 2690693 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Rails宝典之第五十四式: ruby-debug

    博客分类:
  • Ruby
阅读更多
介绍下使用ruby-debug来调试Rails程序

安装ruby-debug:
sudo gem install ruby-debug -y


修改environment.rb:
require 'ruby-debug'


我们在需要调试的代码里使用ruby-debug:
class Task < ActiveRecord::Base
  belongs_to :project

  def self.find_near_due(time)
    debugger
    due_date = time + 10.days
    find(:all, :conditions => ['due_at < ?', due_date], : order => 'due_at')
  end
end


OK,启动服务器,访问该方法,我们会发现浏览器停住了,看看服务器后台,原来服务器已经进入debug模式:
./script/./config/../app/models/task.rb:6 due_date = time + 10.days
(rdb:1)

这时我们可以输入help查看命令,我们简单的输入list来看看代码执行到哪里:
(rdb:1) list
[1, 10] in ./script/../config/../app/models/task.rb
   1  class Task < ActiveRecord::Base
   2    belongs_to :project
   3
   4    def self.find_near_due(time)
   5      debugger
=> 6      due_date = time + 10.days
   7      find(:all, :conditions => ['due_at < ?', due_date], : order => 'due_at')
   8    end
   9  end
   10
(rdb:1) p time
#<Date: 4908571/2,0,2299161>
(rdb:1) p time.to_s
"2007-07-04"
(rdb:1) next

我们使用next来单步调试
非常magic的是这里可以使用irb:
(rdb:1) irb
irb(Task):001:0> y due_date
--- 4373-01-21
=> nil
irb(Task):005:0> time.class
=> Date
irb(Task):006:0> y time + 10
--- 2007-07-14
=> nil
irb(Task):007:0> due_date = time + 10
=> #<Date: 4908591/2,0,2299161>
irb(Task):008:0> y due_date
--- 2007-07-14
=> nil
irb(Task):009:0> exit
(rdb:1)

在irb里我们可以打印time,due_date等变量,in place的调试实在很方便
在irb里修改了due_date值后我们回到rdb,使用cont命令来继续执行请求处理
(rdb:1) cont

我们看到页面执行,结果是正确的。

好了,在debug中我们已经找到错误出在time是一个Date,应该加10而不是10.days,我们修改Task类即可。
分享到:
评论

相关推荐

    Ruby-karafka基于ApacheKafka的Ruby和Rails应用程序开发框架

    Ruby-Karafka是一款针对Apache Kafka构建的Ruby和Rails应用程序开发框架,它为开发者提供了一种高效、灵活的方式来处理消息队列中的数据流。Kafka是一个分布式流处理平台,常用于实时数据管道和构建实时分析应用。...

    ruby安装升级及命令自行编译安装非APTGET方式安装升级的办法

    作为Ruby应用开发中的主流框架之一,Rails可以通过RubyGems轻松安装。执行命令`gem install rails -y`即可一键安装Rails及其所有依赖包。例如: ```bash gem install rails -y ``` 安装完成后,可以使用`gem list`...

    ruby-debug-ide:一个将ruby-debug粘贴到Eclipse(RDT),NetBeans和RubyMine等IDE的接口

    “ ruby​​-debug-ide” gem提供协议来建立调试器引擎(例如或 )和IDE(例如RubyMine,Visual Studio Code或Eclipse)之间的通信。 “ ruby​​-debug-ide”将命令从IDE重定向到调试器引擎。 然后,它将从调试器...

    ruby-2.5.3-x64 下载

    Ruby以其简洁、优雅的语法和强大的元编程能力受到许多开发者的喜爱,尤其在Web开发领域,Ruby on Rails框架的出现极大地推动了Ruby的发展。 标题中的"ruby-2.5.3-x64"指的是Ruby语言的特定版本,2.5.3,这是一个64...

    ruby rails demo

    ruby rails demo, rails 简单demo。 (1)到ruby官网:http://www.ruby-lang.org/en/下载window安装包,并安装, ruby版本: ruby -v (2)安装Rails3 gem install rails (3)安装sqlite3 gem install sqlite3-ruby 安装...

    Ruby on Rails入门经典代码

    Ruby on Rails,简称Rails,是基于Ruby语言的一个开源Web应用程序框架,它遵循MVC(Model-View-Controller)架构模式,旨在使Web开发过程更加高效、简洁。本压缩包中的"Ruby on Rails入门经典代码"提供了新手学习...

    linux ruby-2.5.3

    Ruby是一种强大的、面向对象的脚本语言,尤其适合Web开发和快速原型制作。在Linux操作系统中,Ruby提供了丰富的编程环境,使得开发者可以充分利用其开源和跨平台的优势。本教程将详细讲解如何在Linux环境下安装Ruby ...

    ROR-SuperMarket:Ruby-on-Rails 在线购物网站

    Ruby-on-Rails 超市应用 这是一个电子商务应用程序。 您可以创建一个帐户、登录、选择要购买的商品、将它们放入您的购物车以及结帐您的购物车。 应用程序开发仍在进行中,目前并非所有功能都可用。

    Web开发:Ruby on Rails.pdf

    Web开发:Ruby on Rails.pdf

    Ruby - Ruby for Rails

    ### 一、Ruby/Rails 景观 #### 1.1 如何理解 Ruby 的工作原理 - **基础概念**:介绍 Ruby 作为一种动态类型的面向对象编程语言的基础知识。 - **解释器与虚拟机**:讲解 Ruby 是如何通过解释器或虚拟机运行的。 - *...

    Ruby-RailsErd为Rails应用程序生成实体关系图

    在Ruby on Rails开发中,实体关系图(Entity Relationship Diagram,简称ERD)是一种非常有用的工具,它可以帮助开发者直观地理解数据库中的模型关系。"Rails Erd"是一个Ruby gem,专门用于为Rails应用程序自动生成...

    Ruby-on-Rails-3.rar_site:www.pudn.com

    该资源的核心内容是《Web开发敏捷之道 - 应用Rails进行敏捷Web开发 - 第三版》这本书的PDF版本。这本书详细介绍了使用Ruby on Rails框架进行敏捷Web开发的相关知识。 Ruby on Rails(简称Rails)是一种基于Ruby编程...

    Ruby on Rails Guides v2 - Ruby on Rails 4.2.5

    ### Ruby on Rails Guides v2 - Ruby on Rails 4.2.5 #### 一、重要概念及基础假设 - **重要概念**:本指南旨在帮助读者深入理解Ruby on Rails(以下简称Rails)4.2.5版本的核心功能与最佳实践。 - **基础假设**:...

    react-rails-chat:react-rails 示例应用程序

    您可能想要涵盖的内容: Ruby版系统依赖配置数据库创建数据库初始化如何运行测试套件服务(作业队列、缓存服务器、搜索引擎等) 部署说明… 如果您不打算运行rake doc:app请随意使用不同的标记语言。

    Ruby-Shift一个帮助您在MySQL数据库中运行模式迁移

    Ruby-Shift是一个专门为Ruby开发者设计的工具,它简化了在MySQL数据库中进行模式迁移的过程。在软件开发中,模式迁移是数据库结构随应用程序代码变化而更新的一种方法,确保数据库与应用之间的同步。Ruby-Shift专注...

    Ruby-Annotate注释Rails类模式和路由信息

    Ruby是一种面向对象的编程语言,尤其在Web开发领域中,由于其强大的框架Rails的存在,它变得非常流行。本文将深入探讨"Ruby-Annotate"工具,这是一个用于Rails项目的实用程序,能够自动为你的模型添加注释,显示有关...

    ruby-taiwan:ruby-taiwan.org网站源代码。 #master追ruby-china,生产才是ruby-台湾

    这是源代码安装您需要先安装Ruby 1.9.2 , Rubygems和Rails 3.1 。 安装并启动Redis , MongoDB , memcached , Python , Pygments cp config/config.yml.default config/config.ymlcp config/mongoid.yml.default...

    Ruby-Slackathon在Rails应用程序中构建slack集成的简单方法

    【Ruby-Slackathon在Rails应用程序中构建slack集成的简单方法】 在当今的协作环境中,Slack已经成为团队沟通的重要工具。通过将Slack与Rails应用程序集成,开发者可以创建自定义的自动化工作流程,提高团队效率并...

    rails-docker-compose:Ruby on Rails的Docker开发环境

    使用Docker开发Ruby on Rails的配置文件 docker-compose up 利润! 你得到什么 一线开发环境的设置和启动: docker-compose up 。 一个易于安装的依赖关系可在新计算机上进行编码:Docker。 (与使用Vagrant时的两...

Global site tag (gtag.js) - Google Analytics