过滤终端结果只是得到“放置”

时间:2015-10-18 08:42:47

标签: ruby-on-rails

我的ruby代码中有一些debuge打印行。将其视为v=10 puts v

我只是使用此命令rails server -p $PORT -b $IP

运行我的代码

在终端中有许多未使用的信息,如

=> Booting WEBrick
=> Rails 4.2.1 application starting in development on http://0.0.0.0:8080
=> Run `rails server -h` for more startup options
=> Ctrl-C to shutdown server
[2015-10-18 08:40:17] INFO  WEBrick 1.3.1
[2015-10-18 08:40:17] INFO  ruby 2.2.2 (2015-04-13) [x86_64-linux]
[2015-10-18 08:40:17] INFO  WEBrick::HTTPServer#start: pid=8290 port=8080

.
.
.
10
.
.
.

但我只想得到 10

那么如何过滤结果?

2 个答案:

答案 0 :(得分:2)

由于这是一个rails应用程序,您应该考虑使用logger而不是puts。这会将日志输出到控制台,并将它们存储在文件/ db中,具体取决于rails的配置方式。默认情况下,日志将存储在log/目录中的文件中,以便您以后可以搜索它们。来自本地开发环境的日志将存储在log/development.log

日志可以有不同级别:debug:info:warn:error:fatal:unknown。在你的情况下,听起来你正在调试,所以你可以使用

行记录

logger.debug "Value is: #{value}"

但是,如果要标记日志,那么可能很容易找到来自同一控制器的所有日志,您可以使用日志标记。在这种情况下,您可以使用

logger.tagged("NameOfController") { logger.debug value }

这将输出[NameOfController] value

然后,正如它所说的那样,你可以grep用于查找给定控制器的所有日志的标签上的输出或搜索日志文件。

rails server -p $PORT -b $IP | grep "[NameOfController]"

您可以在官方导轨指南here中找到有关使用logger和其他导轨调试的详细信息,以及有关标记here的信息。

另一种选择是使用调试器而不是记录。

答案 1 :(得分:0)

您可以使用grep。

过滤输出

请试一试。

rails server -p $PORT -b $IP | grep "Hello World"