문제

Out of curiosity I tried file-tail ruby library to see how it works with ruby code. But, the code doesn't seem to be working.

Here is what I tired(logger.rb):

$:.unshift File.dirname(__FILE__)

filename = 'logger.log'

require "file-tail"

File.open(filename) do |log|
  log.extend(File::Tail)
  log.interval = 10
  log.backward(10)
  log.tail { |line| puts line }
end

My logger.log file is in the same directory. Now, when I run: $ ruby logger.rb I see the last 10 lines from my log, but when I open logger.log file append some log data to it, the console doesn't show any progress. I mean it doesn't output the new log I appended.

I thought there may be in an issue with this. So, I tried inheriting and including the File::Tail in the inherited class, like this:

$:.unshift File.dirname(__FILE__)

filename = 'logger.log'

require "file-tail"

class FileTail < File
  require "file-tail"
  include File::Tail
end

log = FileTail.new(filename)
log.interval = 10
log.backward(10)
log.tail { |line| print line }

However this behaves the same way!!

Any pointers?

I am running on MAC OC X 10.8.5 with ruby-2.0.0-p353 installed.

Also, please let me know if anybody has implemented web version of tail in Ruby?

도움이 되었습니까?

해결책

My Bad. This works when I closed all streams of my logger file. I'd opened the file in my ruby code but, didn't close the file stream. Maybe that's why I didn't see any log output on my console using the file-tail.

So, make sure you close all streams of the log/text file you're running with file-tail program.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top