每当我写入文件时,如何抑制转储到STDOUT?我最接近的是使用quietly
,但它仍然没有抑制文件内容的输出:
quietly do
puts "shhhh" # (suppressed)
File.write("filename.txt", "content") #=> "content"
end
编辑:为了让我的问题更加清晰,我并没有试图将输出压缩到文件本身,而是压缩到控制台。上面的File#write
正在撰写"内容"到文件,但也回到控制台。
这里是上下文中的代码:
namespace :export do
desc 'Export dictionary entries'
task :entries => :environment do |task|
# fetch entries, iterate over objects, concatenate string representation to "out"
filename = "entries.rb"
puts "Exporting entries to #{filename}..." # prints 1st
File.write(filename, out) # prints at the end
puts "Exported entries." # prints 2nd
end
end
我没有覆盖任何IO方法。但我发现,如果我定义这样的另一个任务(灵感来自this answer):
task :call_entries => :environment do |task|
quietly do
Rake::Task['export:entries'].invoke
end
end
它实际上会抑制所有控制台输出。