Ciao,
vorrei realizzare un parser di log in real time, ovvero il processo rimane attivo e controlla i cambiamenti i in file. Via via che al file vengono aggiunte stringhe, il processo le intercetta e fa il parsing.

Qui di seguito cio' che per ora sono riuscito a fare, il problema e' che non riesco a far coesistere i due thread di lettura e parsing (che per ora mi basta scrivano cio' che accade). Con questo codice lo script ruby esce e 'tail' rimane in esecuzione...


codice:
require 'thread'

class LogParser

	def initialize(file2parse)
		@@file2parse = file2parse
		@queue = Queue.new
	end

	def fifo_build
		producer = Thread.new do
			IO.popen(@@file2parse) do |pipe|
   				pipe.sync = true
   				while str = pipe.gets
     					@queue << str
	   			end
			end
		end
	end

	def printRes
		consumer = Thread.new do
      			puts @queue.pop
    		end
	end
end

parser = LogParser.new("tail -F -n 0 ~/test")
parser.fifo_build
parser.printRes