루비 온 레일에서 줄 바꿈없이 콘솔에 "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.