2014-06-19 4 views
0

Ruby를 사용하여 실시간으로 파일에 일부 출력을 기록하려고합니다. 로그 파일에서 tail -f를 수행하고 출력 결과를 기록하고 싶습니다. 현재 파일은 루비 스크립트를 멈 추면 한 번만 기록됩니다. 내가 뭘하려고하는지 곧장 보인다.Ruby 실시간 로그인

나는 로그 파일을 생성

log = File.open(logFileName, "a") 

나중에 사용하여 쓰기 :

log.puts "#{variable}" 

다시, 로그 파일이 만들어 올바른 항목이 있지만이를 중지 한 번만에 도착 스크립트가 실행되지 않습니다. 나는 꼬리에 로그 파일을보고 실시간으로해야합니다.

미리 감사드립니다.

답변

2

일반적으로 파일 입출력은 어느 정도 버퍼링됩니다. 당신은 플래그를 틀지하여이 동작을 비활성화 할 수 있습니다

log.sync = true 

이 각 쓰기 후에 flush 작업을 강제로 버퍼링을 사용하지 않습니다. 이를 사용하면 tail -f과 같은 프로그램에서 실시간으로 데이터를 읽을 수 있습니다.