e = EventLog.open("Application")
puts "Record added to log"
The tail method sits in an infinite loop (which is accomplished with the 'goto'), yielding a (custom) struct every time a record is written to the event log.
On a stranger note, the Windows function NotifyChangeEventLog() can only detect a maximum of one change every five seconds. That means, even if 20 records were written to the event log in under 5 seconds, that block would only pick up the first one. No, there's no way around it.