介绍下使用
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是一款针对Apache Kafka构建的Ruby和Rails应用程序开发框架,它为开发者提供了一种高效、灵活的方式来处理消息队列中的数据流。Kafka是一个分布式流处理平台,常用于实时数据管道和构建实时分析应用。...
作为Ruby应用开发中的主流框架之一,Rails可以通过RubyGems轻松安装。执行命令`gem install rails -y`即可一键安装Rails及其所有依赖包。例如: ```bash gem install rails -y ``` 安装完成后,可以使用`gem list`...
“ ruby-debug-ide” gem提供协议来建立调试器引擎(例如或 )和IDE(例如RubyMine,Visual Studio Code或Eclipse)之间的通信。 “ ruby-debug-ide”将命令从IDE重定向到调试器引擎。 然后,它将从调试器...
Ruby以其简洁、优雅的语法和强大的元编程能力受到许多开发者的喜爱,尤其在Web开发领域,Ruby on Rails框架的出现极大地推动了Ruby的发展。 标题中的"ruby-2.5.3-x64"指的是Ruby语言的特定版本,2.5.3,这是一个64...
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,简称Rails,是基于Ruby语言的一个开源Web应用程序框架,它遵循MVC(Model-View-Controller)架构模式,旨在使Web开发过程更加高效、简洁。本压缩包中的"Ruby on Rails入门经典代码"提供了新手学习...
Ruby是一种强大的、面向对象的脚本语言,尤其适合Web开发和快速原型制作。在Linux操作系统中,Ruby提供了丰富的编程环境,使得开发者可以充分利用其开源和跨平台的优势。本教程将详细讲解如何在Linux环境下安装Ruby ...
Ruby-on-Rails 超市应用 这是一个电子商务应用程序。 您可以创建一个帐户、登录、选择要购买的商品、将它们放入您的购物车以及结帐您的购物车。 应用程序开发仍在进行中,目前并非所有功能都可用。
Web开发:Ruby on Rails.pdf
### 一、Ruby/Rails 景观 #### 1.1 如何理解 Ruby 的工作原理 - **基础概念**:介绍 Ruby 作为一种动态类型的面向对象编程语言的基础知识。 - **解释器与虚拟机**:讲解 Ruby 是如何通过解释器或虚拟机运行的。 - *...
在Ruby on Rails开发中,实体关系图(Entity Relationship Diagram,简称ERD)是一种非常有用的工具,它可以帮助开发者直观地理解数据库中的模型关系。"Rails Erd"是一个Ruby gem,专门用于为Rails应用程序自动生成...
该资源的核心内容是《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(以下简称Rails)4.2.5版本的核心功能与最佳实践。 - **基础假设**:...
您可能想要涵盖的内容: Ruby版系统依赖配置数据库创建数据库初始化如何运行测试套件服务(作业队列、缓存服务器、搜索引擎等) 部署说明… 如果您不打算运行rake doc:app请随意使用不同的标记语言。
Ruby-Shift是一个专门为Ruby开发者设计的工具,它简化了在MySQL数据库中进行模式迁移的过程。在软件开发中,模式迁移是数据库结构随应用程序代码变化而更新的一种方法,确保数据库与应用之间的同步。Ruby-Shift专注...
Ruby是一种面向对象的编程语言,尤其在Web开发领域中,由于其强大的框架Rails的存在,它变得非常流行。本文将深入探讨"Ruby-Annotate"工具,这是一个用于Rails项目的实用程序,能够自动为你的模型添加注释,显示有关...
这是源代码安装您需要先安装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集成的简单方法】 在当今的协作环境中,Slack已经成为团队沟通的重要工具。通过将Slack与Rails应用程序集成,开发者可以创建自定义的自动化工作流程,提高团队效率并...
使用Docker开发Ruby on Rails的配置文件 docker-compose up 利润! 你得到什么 一线开发环境的设置和启动: docker-compose up 。 一个易于安装的依赖关系可在新计算机上进行编码:Docker。 (与使用Vagrant时的两...