Перенаправить stdout и stderr в режиме реального времени - PullRequest
1 голос
/ 13 марта 2012

Я думаю, что это простой вопрос, но не смог найти решение. Я перенаправляю stdout и stderr сценария ruby, делая «put», а иногда и ошибки (!), В файл журнала следующим образом:

bundle exec rake import:long_task --trace  >& log/import.log &

Но, похоже, он не сбрасывает puts в реальном времени в файл, а когда он получает исключение, он помещает трассировку в верхнюю import.log. Так что это не идеально для отладки, но это работает.

Как я могу перенаправить вывод скрипта в режиме реального времени в файл, чтобы точно увидеть, что я увидел бы, запустив его прямо в терминале без перенаправления?

Использование: Ruby 1.9.2, Rails 3.2, FreeBSD и оболочки csh.

Ответы [ 2 ]

6 голосов
/ 13 марта 2012

STDOUT.sync = true если вы не хотите flush каждый раз

0 голосов
/ 13 марта 2012

Я не уверен, что полностью понимаю ваш вопрос, но рассматривали ли вы вопрос:

$stdout.puts "something on /dev/stdout"
$stdout.flush
$stderr.puts "something on /dev/stderr"
$stderr.flush

Подробнее см. В документации по IO # .

...