ruby-on-rails - 放置调试语句

标签 ruby-on-rails ruby debugging logging

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

在调试代码的时候,不知道是什么原因,我把这些“puts”语句去掉了。

这是个好主意还是我应该保留它们以使我的服务器日志更加清晰?

最佳答案

您应该使用记录器而不是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 中的大多数类(模型、 Controller 和 View )都有方法 logger,因此如果可能,请使用它而不是完整的 Rails.logger。 如果您使用的是旧版本的 Rails,请使用常量 RAILS_DEFAULT_LOGGER 而不是 Rails.logger

关于ruby-on-rails - 放置调试语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7316074/

相关文章:

ruby-on-rails - 更改 Ruby on Rails(版本 6)应用程序中的日志位置(即 `LogDevice`)

ruby-on-rails - 使用 `open-uri` 打开带逗号的 WIKI URL

debugging - 在 WebStorm 中调试 hardhat solidity 测试

debugging - 错误跟踪方法

xcode - 如何告诉 Xcode 在进程启动后立即将调试器附加到进程?

ruby-on-rails - 安装 libyaml Cygwin

ruby-on-rails - 如何对 rails 中的列求和?

mysql - 具有多个地址的用户,但用户有一个主要账单地址、运输地址和个人资料地址

ruby - 哈希需要根据用户的输入进行处理

ruby-on-rails - sidekiq 将类作为参数发送会导致 stacklevel 太深错误