首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >puts语句用于调试

puts语句用于调试
EN

Stack Overflow用户
提问于 2011-09-06 15:03:29
回答 3查看 5.6K关注 0票数 5

当我编写代码时,我非常频繁地使用“put”语句进行调试。它允许我查看服务器中发生的情况。

当调试代码时,我使用删除这些"puts“语句,我不知道是什么原因。

这是一个好主意,或者我应该让它们代替,以使我的服务器日志更清晰?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-09-06 15:19:12

您应该使用记录器而不是puts。使用这种语句:

代码语言:javascript
复制
Rails.logger.debug "DEBUG: #{self.inspect} #{caller(0).first}" if Rails.logger.debug?

如果您想实时(几乎)查看调试过程,只需在另一个终端窗口中使用tail命令:

代码语言:javascript
复制
tail -F log/development.log | grep DEBUG

这样,您就不需要在生产环境中删除这些语句,而且它们不会对性能造成太大的影响,因为if logger.debug?将阻止消息字符串的构造(可能代价很高)。

使用标准输出进行调试通常是一种不好的做法。如果您需要这样的调试,请使用诊断STDERR,如下所示:

代码语言:javascript
复制
STDERR.puts "DEBUG: xyzzy"

Rails中的大多数类(模型、控制器和视图)都有logger方法,所以如果可能的话,请使用它而不是完整的Rails.logger。如果您使用的是旧版本的Rails,请使用常量RAILS_DEFAULT_LOGGER而不是Rails.logger

票数 21
EN

Stack Overflow用户

发布于 2011-09-06 15:14:28

使用记录器:http://guides.rubyonrails.org/debugging_rails_applications.html#the-logger

票数 2
EN

Stack Overflow用户

发布于 2011-09-11 18:40:43

我使用专门为简化这类调试而设计的rails_dt gem。

直接使用Rails.loggerputs有点麻烦,因为它需要你放很多装饰性的东西(DEBUG***等)。围绕调试消息,使其不同于常规的、有用的消息。

此外,如果消息似乎没有包含足够的可搜索字符,则通常很难找到并消除由Rails.loggerputs生成的调试输出。

rails_dt打印原点(文件、行),因此在代码中查找位置很容易。此外,您永远不会混淆DT.p和任何东西,它显然只调试输出,而不是其他什么。

示例:

代码语言:javascript
复制
DT.p "Hello, world!"

# Sent to console, Rails log, dedicated log and Web page, if configured.
[DT app/controllers/root_controller.rb:3] Hello, world!

Gem在here上可用。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7316074

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档