Это мой код (перекомпиляция Как временно перенаправить stderr в Ruby? (который не может быть использован из-за записи собственного расширения):
def silence_stdout(log = '/dev/null')
orig = $stdout.dup
$stdout.reopen(File.new(log, 'w'))
begin
yield
ensure
$stdout = orig
end
end
silence_stdout('ttt.log') do
#do something
end
Но яесть проблема, файл заполняется кодом только после остановки пумы (Ctrl + C). Вероятно, я должен закрыть файл? Но я не понимаю, как это сделать. Все мои попытки закрыть конец файла как "запись не удалась. закрытый поток" или "блок не задан (выход)" . Прошу совета.