rethinkdb 1.15.0.0 → 1.16.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 96b7e6356ef15d865bb29f59a0c84b164cbfa2ea
4
- data.tar.gz: 709661d9216eb7483aa08b99439b7d23e8f7cd68
3
+ metadata.gz: a1794895a9ff42acedd81e8a39670e7ebdbcda21
4
+ data.tar.gz: 7eb72083c471ad5e32cbbbd02dbc403d897db87c
5
5
  SHA512:
6
- metadata.gz: d1b85c8b33bbe60a95b14c2f8f1a33b78e732da55065db74c860f3fd724033c799f064ad4245b4a7b866b8193c2550d4f0f46277477f3baabd422251b8adc17a
7
- data.tar.gz: fbd57d77ef74bb44651176827a42f5415bc7747303202980de56123eb77d2f041fd26161fd86a0215cbac0ab6b550d2729928effd03364ab39fa7db7f0b7003a
6
+ metadata.gz: 0c089f1c39bbaeaf3b467cd7601db23e7558e38933497fb178e00916d3000281defaf4c05cb28ee7766274c31e8d9b163091e8975028fdde5e75d83e10014313
7
+ data.tar.gz: e5acd237522ca83acb6f6302cf35359599c9adb6dfcc43a6f43d6684dc012b3e6c8ff8542d73ac73dd4e63774678b4b606e3685657f42211b29d229525d9c983
data/lib/func.rb CHANGED
@@ -25,6 +25,7 @@ module RethinkDB
25
25
  :between => 2,
26
26
  :table => -1,
27
27
  :table_create => -1,
28
+ :reconfigure => 0,
28
29
  :get_all => -1,
29
30
  :eq_join => -1,
30
31
  :javascript => -1,
@@ -32,6 +33,7 @@ module RethinkDB
32
33
  :slice => -1,
33
34
  :during => -1,
34
35
  :orderby => -1,
36
+ :order_by => -1,
35
37
  :group => -1,
36
38
  :iso8601 => -1,
37
39
  :index_create => -1,
@@ -42,7 +44,11 @@ module RethinkDB
42
44
  :distance => -1,
43
45
  :circle => -1,
44
46
  :get_intersecting => -1,
45
- :get_nearest => -1
47
+ :get_nearest => -1,
48
+ :min => -1,
49
+ :max => -1,
50
+ :changes => -1,
51
+ :wait => 0
46
52
  }
47
53
  @@method_aliases = {
48
54
  :lt => :<,
@@ -56,11 +62,11 @@ module RethinkDB
56
62
  :mod => :%,
57
63
  :any => [:"|", :or],
58
64
  :all => [:"&", :and],
59
- :orderby => :order_by,
60
- :concatmap => :concat_map,
61
- :foreach => :for_each,
65
+ :order_by => :orderby,
66
+ :concat_map => :concatmap,
67
+ :for_each => :foreach,
62
68
  :javascript => :js,
63
- :typeof => :type_of
69
+ :type_of => :typeof
64
70
  }
65
71
 
66
72
  termtypes = Term::TermType.constants.map{ |c| c.to_sym }
data/lib/net.rb CHANGED
@@ -1,6 +1,7 @@
1
1
  require 'socket'
2
2
  require 'thread'
3
3
  require 'timeout'
4
+ require 'pp' # This is needed for pretty_inspect
4
5
 
5
6
  module RethinkDB
6
7
  module Faux_Abort
@@ -13,8 +14,8 @@ module RethinkDB
13
14
  def self.set_default_conn c; @@default_conn = c; end
14
15
  def run(c=@@default_conn, opts=nil, &b)
15
16
  unbound_if(@body == RQL)
16
- c, opts = @@default_conn, c if opts.nil? && !c.kind_of?(RethinkDB::Connection)
17
- opts = {} if opts.nil?
17
+ c, opts = @@default_conn, c if !opts && !c.kind_of?(RethinkDB::Connection)
18
+ opts = {} if !opts
18
19
  opts = {opts => true} if opts.class != Hash
19
20
  if (tf = opts[:time_format])
20
21
  opts[:time_format] = (tf = tf.to_s)
@@ -45,17 +46,17 @@ module RethinkDB
45
46
  class Cursor
46
47
  include Enumerable
47
48
  def out_of_date # :nodoc:
48
- @conn.conn_id != @conn_id
49
+ @conn.conn_id != @conn_id || !@conn.is_open()
49
50
  end
50
51
 
51
52
  def inspect # :nodoc:
52
53
  preview_res = @results[0...10]
53
- if (@results.size > 10 || @more)
54
+ if @results.size > 10 || @more
54
55
  preview_res << (dots = "..."; class << dots; def inspect; "..."; end; end; dots)
55
56
  end
56
57
  preview = preview_res.pretty_inspect[0...-1]
57
58
  state = @run ? "(exhausted)" : "(enumerable)"
58
- extra = out_of_date ? " (Connection #{@conn.inspect} reset!)" : ""
59
+ extra = out_of_date ? " (Connection #{@conn.inspect} is closed.)" : ""
59
60
  "#<RethinkDB::Cursor:#{self.object_id} #{state}#{extra}: #{RPP.pp(@msg)}" +
60
61
  (@run ? "" : "\n#{preview}") + ">"
61
62
  end
@@ -73,12 +74,13 @@ module RethinkDB
73
74
  end
74
75
 
75
76
  def each (&block) # :nodoc:
76
- raise RqlRuntimeError, "Can only iterate over Query_Results once!" if @run
77
+ raise RqlRuntimeError, "Can only iterate over a cursor once." if @run
78
+ return self.enum_for(:each) if !block
77
79
  @run = true
78
- raise RqlRuntimeError, "Connection has been reset!" if out_of_date
79
80
  while true
80
81
  @results.each(&block)
81
82
  return self if !@more
83
+ raise RqlRuntimeError, "Connection is closed." if @more && out_of_date
82
84
  res = @conn.wait(@token)
83
85
  @results = Shim.response_to_native(res, @msg, @opts)
84
86
  if res['t'] == Response::ResponseType::SUCCESS_SEQUENCE
@@ -92,9 +94,13 @@ module RethinkDB
92
94
  def close
93
95
  if @more
94
96
  @more = false
97
+ @conn.wait(@token) # Ignore the response - TODO: do this asynchronously
95
98
  q = [Query::QueryType::STOP]
96
99
  res = @conn.run_internal(q, @opts, @token)
97
- if res['t'] != Response::ResponseType::SUCCESS_SEQUENCE || res.response != []
100
+ if ((res['t'] != Response::ResponseType::SUCCESS_SEQUENCE &&
101
+ res['t'] != Response::ResponseType::SUCCESS_FEED &&
102
+ res['t'] != Response::ResponseType::SUCCESS_ATOM_FEED) ||
103
+ res['r'] != [])
98
104
  raise RqlRuntimeError, "Server sent malformed STOP response #{PP.pp(res, "")}"
99
105
  end
100
106
  return true
@@ -102,7 +108,7 @@ module RethinkDB
102
108
  end
103
109
 
104
110
  def fetch_batch
105
- @conn.set_opts(@token, @opts)
111
+ @conn.register_query(@token, @opts)
106
112
  @conn.dispatch([Query::QueryType::CONTINUE], @token)
107
113
  end
108
114
  end
@@ -134,7 +140,7 @@ module RethinkDB
134
140
  @token_cnt = 0
135
141
  @token_cnt_mutex = Mutex.new
136
142
 
137
- reconnect(:noreply_wait => false)
143
+ self.connect()
138
144
  end
139
145
  attr_reader :host, :port, :default_db, :conn_id
140
146
 
@@ -142,19 +148,24 @@ module RethinkDB
142
148
  @token_cnt_mutex.synchronize{@token_cnt += 1}
143
149
  end
144
150
 
145
- def set_opts(token, opts)
146
- @mutex.synchronize{@opts[token] = opts}
151
+ def register_query(token, opts)
152
+ if !opts[:noreply]
153
+ @listener_mutex.synchronize{
154
+ raise RqlDriverError, "Internal driver error, token already in use." \
155
+ if @waiters.has_key?(token)
156
+ @waiters[token] = ConditionVariable.new
157
+ @opts[token] = opts
158
+ }
159
+ end
147
160
  end
148
161
  def run_internal(q, opts, token)
149
- set_opts(token, opts)
150
- noreply = opts[:noreply]
151
-
162
+ register_query(token, opts)
152
163
  dispatch(q, token)
153
- noreply ? nil : wait(token)
164
+ opts[:noreply] ? nil : wait(token)
154
165
  end
155
166
  def run(msg, opts, &b)
156
- reconnect(:noreply_wait => false) if @auto_reconnect && (!@socket || !@listener)
157
- raise RqlRuntimeError, "Error: Connection Closed." if !@socket || !@listener
167
+ reconnect(:noreply_wait => false) if @auto_reconnect && !self.is_open()
168
+ raise RqlRuntimeError, "Connection is closed." if !self.is_open()
158
169
 
159
170
  global_optargs = {}
160
171
  all_opts = @default_opts.merge(opts)
@@ -172,7 +183,8 @@ module RethinkDB
172
183
  res = run_internal(q, all_opts, token)
173
184
  return res if !res
174
185
  if res['t'] == Response::ResponseType::SUCCESS_PARTIAL ||
175
- res['t'] == Response::ResponseType::SUCCESS_FEED
186
+ res['t'] == Response::ResponseType::SUCCESS_FEED ||
187
+ res['t'] == Response::ResponseType::SUCCESS_ATOM_FEED
176
188
  value = Cursor.new(Shim.response_to_native(res, msg, opts),
177
189
  msg, self, opts, token, true)
178
190
  elsif res['t'] == Response::ResponseType::SUCCESS_SEQUENCE
@@ -213,15 +225,20 @@ module RethinkDB
213
225
  return token
214
226
  end
215
227
 
216
- def wait token
228
+ def wait(token)
217
229
  begin
218
230
  res = nil
219
- raise RqlRuntimeError, "Connection closed by server!" if not @listener
220
- @mutex.synchronize {
221
- (@waiters[token] = ConditionVariable.new).wait(@mutex) if not @data[token]
222
- res = @data.delete token if @data[token]
231
+ @listener_mutex.synchronize {
232
+ raise RqlRuntimeError, "Connection is closed." if !@waiters.has_key?(token)
233
+ res = @data.delete(token)
234
+ if res == nil
235
+ @waiters[token].wait(@listener_mutex)
236
+ res = @data.delete(token)
237
+ end
238
+ @waiters.delete(token)
223
239
  }
224
- raise RqlRuntimeError, "Connection closed by server!" if !@listener or !res
240
+ raise RqlRuntimeError, "Connection is closed." if res.nil? && !self.is_open()
241
+ raise RqlDriverError, "Internal driver error, no response found." if res.nil?
225
242
  return res
226
243
  rescue @abort_module::Abort => e
227
244
  print "\nAborting query and reconnecting...\n"
@@ -239,7 +256,7 @@ module RethinkDB
239
256
  def inspect
240
257
  db = @default_opts[:db] || RQL.new.db('test')
241
258
  properties = "(#{@host}:#{@port}) (Default DB: #{db.inspect})"
242
- state = @listener ? "(listening)" : "(closed)"
259
+ state = self.is_open() ? "(open)" : "(closed)"
243
260
  "#<RethinkDB::Connection:#{self.object_id} #{properties} #{state}>"
244
261
  end
245
262
 
@@ -254,44 +271,53 @@ module RethinkDB
254
271
  # enumerables on the client.
255
272
  def reconnect(opts={})
256
273
  raise ArgumentError, "Argument to reconnect must be a hash." if opts.class != Hash
257
- if not (opts.keys - [:noreply_wait]).empty?
258
- raise ArgumentError, "reconnect does not understand these options: " +
259
- (opts.keys - [:noreply_wait]).to_s
260
- end
261
- opts[:noreply_wait] = true if not opts.keys.include?(:noreply_wait)
262
-
263
- self.noreply_wait() if opts[:noreply_wait]
274
+ self.close(opts)
275
+ self.connect()
276
+ end
264
277
 
265
- stop_listener
266
- @socket.close rescue nil if @socket
278
+ def connect()
279
+ raise RuntimeError, "Connection must be closed before calling connect." if @socket
267
280
  @socket = TCPSocket.open(@host, @port)
281
+ @listener_mutex = Mutex.new
268
282
  @waiters = {}
269
283
  @opts = {}
270
284
  @data = {}
271
- @mutex = Mutex.new
272
285
  @conn_id += 1
273
286
  start_listener
274
-
275
287
  self
276
288
  end
277
289
 
290
+ def is_open()
291
+ @socket && @listener
292
+ end
293
+
278
294
  def close(opts={})
279
295
  raise ArgumentError, "Argument to close must be a hash." if opts.class != Hash
280
- if not (opts.keys - [:noreply_wait]).empty?
296
+ if !(opts.keys - [:noreply_wait]).empty?
281
297
  raise ArgumentError, "close does not understand these options: " +
282
298
  (opts.keys - [:noreply_wait]).to_s
283
299
  end
284
- opts[:noreply_wait] = true if not opts.keys.include?(:noreply_wait)
300
+ opts[:noreply_wait] = true if !opts.keys.include?(:noreply_wait)
285
301
 
286
- self.noreply_wait() if opts[:noreply_wait]
287
- @listener.terminate if @listener
302
+ self.noreply_wait() if opts[:noreply_wait] && self.is_open()
303
+ if @listener
304
+ @listener.terminate
305
+ @listener.join
306
+ end
307
+ @socket.close if @socket
288
308
  @listener = nil
289
- @socket.close
290
309
  @socket = nil
310
+ @listener_mutex.synchronize {
311
+ @opts.clear
312
+ @data.clear
313
+ @waiters.values.each{ |w| w.signal }
314
+ @waiters.clear
315
+ }
316
+ self
291
317
  end
292
318
 
293
319
  def noreply_wait
294
- raise RqlRuntimeError, "Error: Connection Closed." if !@socket || !@listener
320
+ raise RqlRuntimeError, "Connection is closed." if !self.is_open()
295
321
  q = [Query::QueryType::NOREPLY_WAIT]
296
322
  res = run_internal(q, {noreply: false}, new_token)
297
323
  if res['t'] != Response::ResponseType::WAIT_COMPLETE
@@ -305,24 +331,18 @@ module RethinkDB
305
331
  raise RqlRuntimeError, "No last connection. Use RethinkDB::Connection.new."
306
332
  end
307
333
 
308
- def stop_listener
309
- if @listener
310
- @listener.terminate
311
- @listener.join
312
- @listener = nil
313
- end
314
- end
315
-
316
334
  def note_data(token, data) # Synchronize around this!
335
+ raise RqlDriverError, "Unknown token in response." if !@waiters.has_key?(token)
317
336
  @data[token] = data
318
337
  @opts.delete(token)
319
- @waiters.delete(token).signal if @waiters[token]
338
+ w = @waiters[token]
339
+ w.signal if w
320
340
  end
321
341
 
322
342
  def note_error(token, e) # Synchronize around this!
323
343
  data = {
324
- 't' => 16,
325
- 'r' => [e.inspect],
344
+ 't' => Response::ResponseType::CLIENT_ERROR,
345
+ 'r' => [e.message],
326
346
  'b' => []
327
347
  }
328
348
  note_data(token, data)
@@ -336,7 +356,7 @@ module RethinkDB
336
356
  def read_exn(len, timeout_sec=nil)
337
357
  maybe_timeout(timeout_sec) {
338
358
  buf = read len
339
- if !buf or buf.length != len
359
+ if !buf || buf.length != len
340
360
  raise RqlRuntimeError, "Connection closed by server."
341
361
  end
342
362
  return buf
@@ -351,14 +371,15 @@ module RethinkDB
351
371
  end
352
372
  response = response[0...-1]
353
373
  if response != "SUCCESS"
354
- raise RqlRuntimeError,"Server dropped connection with message: \"#{response}\""
374
+ raise RqlRuntimeError, "Server dropped connection with message: \"#{response}\""
355
375
  end
356
376
 
357
- stop_listener if @listener
377
+ raise RqlDriverError, "Internal driver error, listener already started." \
378
+ if @listener
358
379
  @listener = Thread.new {
359
380
  while true
360
381
  begin
361
- token = -1
382
+ token = nil
362
383
  token = @socket.read_exn(8).unpack('q<')[0]
363
384
  response_length = @socket.read_exn(4).unpack('L<')[0]
364
385
  response = @socket.read_exn(response_length)
@@ -368,22 +389,14 @@ module RethinkDB
368
389
  raise RqlRuntimeError, "Bad response, server is buggy.\n" +
369
390
  "#{e.inspect}\n" + response
370
391
  end
371
- if token == -1
372
- @mutex.synchronize{@waiters.keys.each{|k| note_data(k, data)}}
373
- else
374
- @mutex.synchronize{note_data(token, data)}
375
- end
392
+ @listener_mutex.synchronize{note_data(token, data)}
376
393
  rescue Exception => e
377
- if token == -1
378
- @mutex.synchronize {
379
- @listener = nil
380
- @waiters.keys.each{|k| note_error(k, e)}
381
- }
394
+ @listener_mutex.synchronize {
395
+ @waiters.keys.each{ |k| note_error(k, e) }
396
+ @listener = nil
382
397
  Thread.current.terminate
383
398
  abort("unreachable")
384
- else
385
- @mutex.synchronize{note_error(token, e)}
386
- end
399
+ }
387
400
  end
388
401
  end
389
402
  }
data/lib/ql2.pb.rb CHANGED
@@ -44,6 +44,7 @@ module RethinkDB
44
44
  SUCCESS_PARTIAL = 3
45
45
  SUCCESS_FEED = 5
46
46
  WAIT_COMPLETE = 4
47
+ SUCCESS_ATOM_FEED = 6
47
48
  CLIENT_ERROR = 16
48
49
  COMPILE_ERROR = 17
49
50
  RUNTIME_ERROR = 18
@@ -116,8 +117,8 @@ module RethinkDB
116
117
  REDUCE = 37
117
118
  MAP = 38
118
119
  FILTER = 39
119
- CONCATMAP = 40
120
- ORDERBY = 41
120
+ CONCAT_MAP = 40
121
+ ORDER_BY = 41
121
122
  DISTINCT = 42
122
123
  COUNT = 43
123
124
  IS_EMPTY = 86
@@ -128,12 +129,13 @@ module RethinkDB
128
129
  OUTER_JOIN = 49
129
130
  EQ_JOIN = 50
130
131
  ZIP = 72
132
+ RANGE = 173
131
133
  INSERT_AT = 82
132
134
  DELETE_AT = 83
133
135
  CHANGE_AT = 84
134
136
  SPLICE_AT = 85
135
137
  COERCE_TO = 51
136
- TYPEOF = 52
138
+ TYPE_OF = 52
137
139
  UPDATE = 53
138
140
  DELETE = 54
139
141
  REPLACE = 55
@@ -144,6 +146,11 @@ module RethinkDB
144
146
  TABLE_CREATE = 60
145
147
  TABLE_DROP = 61
146
148
  TABLE_LIST = 62
149
+ CONFIG = 174
150
+ STATUS = 175
151
+ WAIT = 177
152
+ RECONFIGURE = 176
153
+ REBALANCE = 179
147
154
  SYNC = 138
148
155
  INDEX_CREATE = 75
149
156
  INDEX_DROP = 76
@@ -155,7 +162,7 @@ module RethinkDB
155
162
  BRANCH = 65
156
163
  ANY = 66
157
164
  ALL = 67
158
- FOREACH = 68
165
+ FOR_EACH = 68
159
166
  FUNC = 69
160
167
  ASC = 73
161
168
  DESC = 74
@@ -166,6 +173,7 @@ module RethinkDB
166
173
  SAMPLE = 81
167
174
  DEFAULT = 92
168
175
  JSON = 98
176
+ TO_JSON_STRING = 172
169
177
  ISO8601 = 99
170
178
  TO_ISO8601 = 100
171
179
  EPOCH_TIME = 101
data/lib/rethinkdb.rb CHANGED
@@ -1,14 +1,11 @@
1
- # Copyright 2010-2012 RethinkDB, all rights reserved.
2
- require 'rubygems'
3
- require 'ql2.pb.rb'
4
- require 'socket'
5
- require 'pp'
1
+ # Copyright 2010-2014 RethinkDB, all rights reserved.
6
2
 
7
- load 'exc.rb'
8
- load 'net.rb'
9
- load 'shim.rb'
10
- load 'func.rb'
11
- load 'rpp.rb'
3
+ require_relative './ql2.pb.rb'
4
+ require_relative './exc.rb'
5
+ require_relative './net.rb'
6
+ require_relative './shim.rb'
7
+ require_relative './func.rb'
8
+ require_relative './rpp.rb'
12
9
 
13
10
  module RethinkDB
14
11
  module Shortcuts
data/lib/rpp.rb CHANGED
@@ -1,4 +1,3 @@
1
- require 'pp'
2
1
  require 'prettyprint'
3
2
 
4
3
  module RethinkDB
@@ -75,11 +74,8 @@ module RethinkDB
75
74
  end
76
75
 
77
76
  def self.pp_int_func(q, func, bt)
78
- # PP.pp [:func, func.to_json, bt]
79
77
  begin
80
- # PP.pp func
81
78
  func_args = func[1][0][1].map{|x| x.to_pb}
82
- # PP.pp JSON.parse(func_args.to_json)
83
79
  func_body = func[1][1]
84
80
  q.text(" ")
85
81
  q.group(0, "{", "}") {
@@ -108,14 +104,14 @@ module RethinkDB
108
104
  else
109
105
  return !["db", "db_create", "db_drop", "json", "funcall", "args", "branch", "http",
110
106
  "binary", "javascript", "random", "time", "iso8601", "epoch_time", "now",
111
- "geojson", "point", "circle", "line", "polygon", "asc", "desc", "literal" ].include?(name)
107
+ "geojson", "point", "circle", "line", "polygon", "asc", "desc", "literal",
108
+ "range"].include?(name)
112
109
  end
113
110
  end
114
111
  def self.pp_int(q, term, bt, pre_dot=false)
115
112
  q.text("\x7", 0) if bt == []
116
113
 
117
114
  term = term.to_pb if term.class == RQL
118
- # PP.pp [:pp_int, term.to_json, bt]
119
115
  if term.class != Array
120
116
  if term.class == Hash
121
117
  if not pp_pseudotype(q, term, bt)
@@ -193,7 +189,6 @@ module RethinkDB
193
189
  if args[-1] && args[-1].class == Array && args[-1][0] == Term::TermType::FUNC
194
190
  func_bt = bt_consume(bt, args.size() - 1 + arg_offset)
195
191
  func = args.pop
196
- # PP.pp [:func_bt, bt, arg_offset, (args.size() - 1) + arg_offset, func_bt]
197
192
  end
198
193
 
199
194
  if args != [] || optargs != {}
@@ -208,7 +203,6 @@ module RethinkDB
208
203
  q.text(",")
209
204
  q.breakable
210
205
  end
211
- # PP.pp [:int, arg.to_json, bt_consume(bt, index)]
212
206
  pp_int(q, arg, bt_consume(bt, index + arg_offset))
213
207
  }
214
208
  if optargs != {}
@@ -228,7 +222,6 @@ module RethinkDB
228
222
  end
229
223
 
230
224
  def self.pp(term, bt=nil)
231
- # PP.pp bt
232
225
  begin
233
226
  q = PrettyPrint.new
234
227
  pp_int(q, term, bt, true)
data/lib/shim.rb CHANGED
@@ -59,13 +59,14 @@ module RethinkDB
59
59
  rt = Response::ResponseType
60
60
  begin
61
61
  case r['t']
62
- when rt::SUCCESS_ATOM then r['r'][0]
63
- when rt::SUCCESS_FEED then r['r']
64
- when rt::SUCCESS_PARTIAL then r['r']
65
- when rt::SUCCESS_SEQUENCE then r['r']
66
- when rt::RUNTIME_ERROR then raise RqlRuntimeError, r['r'][0]
67
- when rt::COMPILE_ERROR then raise RqlCompileError, r['r'][0]
68
- when rt::CLIENT_ERROR then raise RqlDriverError, r['r'][0]
62
+ when rt::SUCCESS_ATOM then r['r'][0]
63
+ when rt::SUCCESS_FEED then r['r']
64
+ when rt::SUCCESS_ATOM_FEED then r['r']
65
+ when rt::SUCCESS_PARTIAL then r['r']
66
+ when rt::SUCCESS_SEQUENCE then r['r']
67
+ when rt::RUNTIME_ERROR then raise RqlRuntimeError, r['r'][0]
68
+ when rt::COMPILE_ERROR then raise RqlCompileError, r['r'][0]
69
+ when rt::CLIENT_ERROR then raise RqlDriverError, r['r'][0]
69
70
  else raise RqlRuntimeError, "Unexpected response: #{r.inspect}"
70
71
  end
71
72
  rescue RqlError => e
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rethinkdb
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.15.0.0
4
+ version: 1.16.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - RethinkDB Inc.
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-09-25 00:00:00.000000000 Z
11
+ date: 2015-01-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: json
@@ -31,12 +31,12 @@ extensions: []
31
31
  extra_rdoc_files: []
32
32
  files:
33
33
  - lib/ql2.pb.rb
34
- - lib/net.rb
35
- - lib/func.rb
36
34
  - lib/exc.rb
35
+ - lib/func.rb
36
+ - lib/net.rb
37
+ - lib/rethinkdb.rb
37
38
  - lib/rpp.rb
38
39
  - lib/shim.rb
39
- - lib/rethinkdb.rb
40
40
  homepage: http://rethinkdb.com
41
41
  licenses:
42
42
  - Apache-2