Ruby 将标准输出输出到文件并再次返回

Ruby 将标准输出输出到文件并再次返回,ruby,Ruby,我使用以下代码将标准输出路由到文件: STDOUT.reopen(File.open("./OUTPUT",'w+')) 现在我需要再次将STDOUT路由到终端 我该怎么做?更新 orig_std_out = STDOUT.clone STDOUT.reopen(File.open('OUTPUT', 'w+')) puts "test to file" STDOUT.reopen(orig_std_out) puts "test to screen" 您需要在文件句柄1上重新打开STDOU

我使用以下代码将标准输出路由到文件:

STDOUT.reopen(File.open("./OUTPUT",'w+'))
现在我需要再次将STDOUT路由到终端


我该怎么做?

更新

orig_std_out = STDOUT.clone
STDOUT.reopen(File.open('OUTPUT', 'w+'))
puts "test to file"
STDOUT.reopen(orig_std_out)
puts "test to screen"

您需要在文件句柄1上重新打开STDOUT,这是STDOUT的标准fd句柄(
0=stdin,1=STDOUT,2=stderr

我不是一个喜欢红宝石的人,但我认为这是对的:

STDOUT.reopen(IO.for_fd(1, "r"))

在UNIX上更简单:

STDOUT.reopen 'OUTPUT'
puts 'text to file'

STDOUT.reopen '/dev/tty'
puts 'text to console'