rethinkdb 1.15.0.0 → 1.16.0.0

Sign up to get free protection for your applications and to get access to all the features.
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