From acf155a879ad80336f279da6939ac08b787dac28 Mon Sep 17 00:00:00 2001 From: Azul Date: Wed, 2 Jul 2014 11:08:56 +0200 Subject: Fix couchrest missing the first change (#5452) CouchRest::Streamer will ignore the first line from a stream. Normally that's the line opening the results array. But for continuous feeds couch will start streaming the array elements right away. So we miss the first one. There's a pull request pending for couchrest here: https://github.com/couchrest/couchrest/pull/104 Until it's merged we'll monkeypatch. Also stopping tapicero again after travis run. --- .travis.yml | 1 + lib/extends/couchrest.rb | 29 +++++++++++++++++++++++++++++ lib/tapicero_daemon.rb | 1 + 3 files changed, 31 insertions(+) create mode 100644 lib/extends/couchrest.rb diff --git a/.travis.yml b/.travis.yml index 3fd27a7..7e980b8 100644 --- a/.travis.yml +++ b/.travis.yml @@ -11,5 +11,6 @@ before_script: - "bundle exec bin/tapicero status" - "cat /tmp/tapicero_test.log" after_script: + - "bundle exec bin/tapicero stop" - "cat /tmp/tapicero_test.log" - "cat /tmp/tapicero_test.seq" diff --git a/lib/extends/couchrest.rb b/lib/extends/couchrest.rb new file mode 100644 index 0000000..54db9d8 --- /dev/null +++ b/lib/extends/couchrest.rb @@ -0,0 +1,29 @@ +# +# monkeypatch CouchRest::Streamer to fix +# https://github.com/couchrest/couchrest/pull/104 +# +module CouchRest + class Streamer + + def open_pipe(cmd, &block) + first = nil + prev = nil + IO.popen(cmd) do |f| + while line = f.gets + row = parse_line(line) + if row.nil? + first ||= line # save the header for later if we can't parse it. + else + block.call row + end + prev = line + end + end + + raise RestClient::ServerBrokeConnection if $? && $?.exitstatus != 0 + + parse_first(first, prev) + end + + end +end diff --git a/lib/tapicero_daemon.rb b/lib/tapicero_daemon.rb index 89566de..b46158a 100644 --- a/lib/tapicero_daemon.rb +++ b/lib/tapicero_daemon.rb @@ -5,6 +5,7 @@ # Daemons.run('tapicero_daemon.rb') # require 'tapicero' +require 'extends/couchrest' module Tapicero module Daemon -- cgit v1.2.3