【问题标题】:puts doesn't print stuff to consoleputs 不会将内容打印到控制台
【发布时间】:2011-08-06 03:01:26
【问题描述】:

我正在使用 POW 进行本地 Rails 开发。我不知道为什么,但我无法打印或将信息放到我的 development.log 中。我想将变量的内容从我的控制器中放到控制台/日志中。有什么建议吗?

我用tail -f logs/development.log阅读我的日志

谢谢!

【问题讨论】:

  • 请注意,puts 从未将内容写入日志 - 它用于标准输出。

标签: ruby-on-rails ruby printing console logging


【解决方案1】:

试试logger.info(),而不是puts。 Logging in Rails 非常灵活,但这确实意味着您有时可能无法使用最简单的工具。

【讨论】:

  • 记得从 Logger 创建一个 logger 对象。
  • 人们一直建议为此使用记录器,但如果您使用puts,那么您可以立即在控制台中看到您的数据,并在代码运行时打印出来,同时通过使用记录器您必须查看不会根据您使用的文本编辑器自动更新的文本文件,这会导致用户体验更加笨拙。
  • @bpromas,我强烈推荐tail -F 或less +F 用于以下日志文​​件。
  • 这应该是Rails.logger.info,而不是logger.info。普通的 logger 变量仅在少数特定类型的 Rails 文件中可用,例如控制器。
【解决方案2】:

如果您正在调试并且只想在日志中看到一些消息,您可以执行以下操作:

Rails.logger.debug("debug::" + person.name)

和

$ pow logs | grep debug::

现在您只会看到以 debug:: 开头的日志消息

【讨论】:

    【解决方案3】:

    另一种选择是使用 rails 标记记录器,http://api.rubyonrails.org/classes/ActiveSupport/TaggedLogging.html。

    logger = ActiveSupport::TaggedLogging.new(Logger.new(STDOUT))
    logger.tagged('BCX') { logger.info 'Stuff' }                            # Logs "[BCX] Stuff"
    
    $ pow logs | grep BCX
    

    【讨论】:

      【解决方案4】:

      对于仍然无法使用它的任何人,请记住 Ruby 不使用分号。它们只用于chain commands。由于肌肉记忆(来自 PHP),我在最后添加了它们,所以 ruby​​ 控制台认为我仍在输入命令:

      irb(main):001:0> puts "hi";
      irb(main):002:0* puts "hi"
      hi
      hi
      => nil
      

      希望这对某人有所帮助。

      【讨论】:

        猜你喜欢
        • 2015-03-16
        • 2012-02-04
        • 1970-01-01
        • 2014-04-14
        • 1970-01-01
        • 2011-11-22
        • 1970-01-01
        • 2011-10-26
        • 1970-01-01
        相关资源
        最近更新 更多