lib/riemann/babbler/support/monkey_patches.rb in riemann-babbler-1.3.0 vs lib/riemann/babbler/support/monkey_patches.rb in riemann-babbler-1.3.1

- old
+ new

@@ -19,5 +19,23 @@ end alias :append_bytes :append_string end end + +class IO + TAIL_BUF_LENGTH = 1 << 16 + + def tail(n) + return [] if n < 1 + + seek -TAIL_BUF_LENGTH, SEEK_END + + buf = "" + while buf.count("\n") <= n + buf = read(TAIL_BUF_LENGTH) + buf + seek 2 * -TAIL_BUF_LENGTH, SEEK_CUR + end + + buf.split("\n")[-n..-1] + end +end