在Ruby

时间:2015-07-30 17:14:34

标签: ruby

每当我写入文件时,如何抑制转储到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

它实际上会抑制所有控制台输出。

0 个答案:

没有答案