diff options
author | Azul <azul@riseup.net> | 2014-07-02 11:08:56 +0200 |
---|---|---|
committer | Azul <azul@riseup.net> | 2014-07-02 11:10:46 +0200 |
commit | acf155a879ad80336f279da6939ac08b787dac28 (patch) | |
tree | 9fd4cd65b4ad0ef5bc2691553aa6e088b69ba054 /lib/extends/couchrest.rb | |
parent | aac4577031728dab84f077b54e461fcb813ac0c3 (diff) |
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.
Diffstat (limited to 'lib/extends/couchrest.rb')
-rw-r--r-- | lib/extends/couchrest.rb | 29 |
1 files changed, 29 insertions, 0 deletions
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 |