summaryrefslogtreecommitdiff
path: root/lib/extends/couchrest.rb
diff options
context:
space:
mode:
authorazul <azul@leap.se>2014-07-02 11:17:53 +0200
committerazul <azul@leap.se>2014-07-02 11:17:53 +0200
commitc4f89692beeb98afaf61f5da8027236a10f1e440 (patch)
treefce73661f1a92f724d95d886d5f57a2b4c87c911 /lib/extends/couchrest.rb
parent22b785484d6df25348854ecd88f9193c0a825c44 (diff)
parentacf155a879ad80336f279da6939ac08b787dac28 (diff)
Merge pull request #17 from azul/feature/catch-first-change
Work around a bug in couchrest to catch the first change
Diffstat (limited to 'lib/extends/couchrest.rb')
-rw-r--r--lib/extends/couchrest.rb29
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