Как я могу использовать «кладет» на консоль без разрыва строки в ruby ​​на рельсах? - PullRequest
149 голосов
/ 22 февраля 2011

У меня есть метод, который проходит через цикл - я хочу, чтобы он вывел «.»каждый цикл, чтобы я мог видеть это в консоли.однако, когда я использую puts ".".

, он ставит перенос строки в конце каждого, если у него есть сплошная линия?

1 Ответ

190 голосов
/ 22 февраля 2011

Вам нужно использовать печать вместо пут.Кроме того, если вы хотите, чтобы точки отображались плавно, вам необходимо очищать буфер stdout после каждого отпечатка ...

def print_and_flush(str)
  print str
  $stdout.flush
end

100.times do
  print_and_flush "."
  sleep 1
end

Редактировать: Я просто изучал причины, по которым был установлен flushчтобы ответить на комментарий @ rubyprince, и понял, что это можно немного исправить, просто набрав $stdout.sync = true ...

$stdout.sync = true

100.times do
  print "."
  sleep 1
end
...