gpt4 book ai didi

ruby - Puts 语句未将消息打印到控制台

转载 作者:数据小太阳 更新时间:2023-10-29 08:37:49 24 4
gpt4 key购买 nike

我在脚本中放置了一些 puts 语句。但是消息没有打印出来;脚本正在通过这些语句。我观察到执行进入 rake puts 的那一刻在整个流程中都不起作用。

规范助手

class Testbed
puts "Inside test bed" // This puts is printed
some code
some code
some code
some code
end

RSpec.configure do |config|
puts "In side rspec config" // This puts is printed
config.color = true
config.tty = true
some code
some code
some code
some code
end

config.before(:all) do
puts "in before all"//not printed

这里的所有 puts 语句都没有打印输出。我的 put 在页面对象中,不考虑规范文件。

有人可以为此提出解决方法吗?

最佳答案

考虑默认情况下 puts 输出的位置。 It uses $stdout除非你告诉它 use a different channel ,例如:

File.open('foo', 'w') do |fo|
fo.puts 'bar'
end

当它使用 $stdoutSTDOUT 时,调用程序,尤其是在子 shell 中使用 Ruby 的程序,可以捕获输出并执行它想要的操作它。这是操作系统的一个功能。如果我将此代码保存在“test.rb”中:

puts 'foo'

并从 shell 中调用它:

ruby /path/to/test.rb > /some/file.txt

输出将通过管道传输到/some/file.txt,我不会在控制台看到它。同样,如果我有第二个应用程序调用第一个应用程序:

output = %x[ruby /path/to/test.rb]

变量 output 将包含文本 'foo',从正在重新路由的子 shell 的 STDOUT 中捕获。

有很多方法可以做到这一点,从使用反引号或 %x[...] 到使用 popen或将常规 open 命令通过管道传递给 Open3 中的方法。打开文件时讨论文件名,IO docs说:

A string starting with "|" indicates a subprocess. The remainder of the string following the "|" is invoked as a process with appropriate input/output channels connected to it.

因此,问我们为什么 puts 没有输出到您的控制台并不容易回答,但您可以看到,如果除了 Ruby 之外还有其他东西直接调用您的代码,这很容易回答。

关于ruby - Puts 语句未将消息打印到控制台,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25141159/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com