루비 온 레일에서 줄 바꿈없이 콘솔에 "puts"를 사용하려면 어떻게해야합니까?


156

루프를 통과하는 메소드가 있습니다. "."를 출력하고 싶습니다. 각 루프를 콘솔에서 볼 수 있습니다. 그러나 내가 사용할 때 각 끝에 줄 바꿈을합니다 puts ".".

연속 라인을 가질 수있는 방법이 있다면?

답변:


199

풋 대신 프린트를 사용해야합니다. 또한 점이 부드럽게 나타나게하려면 인쇄 할 때마다 stdout 버퍼를 플러시해야합니다.

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

100.times do
  print_and_flush "."
  sleep 1
end

편집 : 나는 @rubyprince의 의견에 대답하기 위해 플러시 뒤에 추론을 조사하고 있었고, 이것을 사용하여 조금 정리 할 수 ​​있음을 깨달았습니다 $stdout.sync = true...

$stdout.sync = true

100.times do
  print "."
  sleep 1
end

3
있나요 $stdout.flush? 정말 필요 .. 루비 1.8.7를 사용하고 난 그냥 함께 일을했던 print.. 나는 아무 문제가 없었다
rubyprince

6
진행률 표시 줄과 같은 작업을 수행하는 경우 유용합니다. 그냥 단독으로 사용하면 바로 쓰지 print않고 버퍼에 저장할 수 있기 때문에 블록으로 나올 수 있습니다 (왜 그런지 모르겠습니다). OS에 따라 다를 수도 있습니다.
idlefingers

2
@ stdout.flush로 시도했습니다. 대신 .sync = true를 사용하면 어떤 이점이 있습니까?
Timothy T.

stdout을 설정하는 sync것은 하나의 문자열을 출력하는 과잉 이라고 생각 합니다. 그런 다음 앱이 많이 출력하면 속도가 느려집니다.
akostadinov
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.