当我编写代码时,我非常频繁地使用“put”语句进行调试。它允许我查看服务器中发生的情况。
当调试代码时,我使用删除这些"puts“语句,我不知道是什么原因。
这是一个好主意,或者我应该让它们代替,以使我的服务器日志更清晰?
发布于 2011-09-06 15:19:12
您应该使用记录器而不是puts。使用这种语句:
Rails.logger.debug "DEBUG: #{self.inspect} #{caller(0).first}" if Rails.logger.debug?如果您想实时(几乎)查看调试过程,只需在另一个终端窗口中使用tail命令:
tail -F log/development.log | grep DEBUG这样,您就不需要在生产环境中删除这些语句,而且它们不会对性能造成太大的影响,因为if logger.debug?将阻止消息字符串的构造(可能代价很高)。
使用标准输出进行调试通常是一种不好的做法。如果您需要这样的调试,请使用诊断STDERR,如下所示:
STDERR.puts "DEBUG: xyzzy"Rails中的大多数类(模型、控制器和视图)都有logger方法,所以如果可能的话,请使用它而不是完整的Rails.logger。如果您使用的是旧版本的Rails,请使用常量RAILS_DEFAULT_LOGGER而不是Rails.logger。
发布于 2011-09-06 15:14:28
使用记录器:http://guides.rubyonrails.org/debugging_rails_applications.html#the-logger
发布于 2011-09-11 18:40:43
我使用专门为简化这类调试而设计的rails_dt gem。
直接使用Rails.logger或puts有点麻烦,因为它需要你放很多装饰性的东西(DEBUG,***等)。围绕调试消息,使其不同于常规的、有用的消息。
此外,如果消息似乎没有包含足够的可搜索字符,则通常很难找到并消除由Rails.logger或puts生成的调试输出。
rails_dt打印原点(文件、行),因此在代码中查找位置很容易。此外,您永远不会混淆DT.p和任何东西,它显然只调试输出,而不是其他什么。
示例:
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上可用。
https://stackoverflow.com/questions/7316074
复制相似问题