rethinkdb 1.11.0.2 → 1.12.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: 9f587abb21c2f7e36f127e616288c54b13dfd301
4
- data.tar.gz: 6882be24c8e9299e6e28fd2856807e687a2123e0
3
+ metadata.gz: eba1925eeec3a40cbebb6209d1f659b7880ac82f
4
+ data.tar.gz: a84db592ff134e93e9505fb1bc1e84a147643aab
5
5
  SHA512:
6
- metadata.gz: bf87c17c7361a4fe68ecdf69196a41c253e0177c2d5a7ca308f992dce9c1f419cbad037bf563d5db0417eb9e5253d7350201642276fe0a846b6ecf64706831aa
7
- data.tar.gz: 33ee490117e89cfa8cabc2f793dbd08ae6a8050de0ecb5094282c2303eaab8bba804104eda3d6a5f7e4e2f4e13e497ec44aa57e907b004a83008de6de0cc1cb9
6
+ metadata.gz: 2a31d54964b3086feac437eb843bedbc83cc3c4cdf7999128775b121576488ad6f06c5f03c45397b92d243c6e0000b866fad7d7f5797995f370420eb9d2391f2
7
+ data.tar.gz: a67cf797dd62f616e0992b913b028b8c8ef919388f90ae54301b1a4ba5730b6a66f9d135cd660368df82137b29af437278ddc6c557806b25fbe10f223d635ac3
data/lib/func.rb CHANGED
@@ -15,89 +15,95 @@ module RethinkDB
15
15
  # only be removed from the argument list and treated as an optarg
16
16
  # if it's a Hash. A positive value is necessary for functions
17
17
  # that can take a hash for the last non-optarg argument.
18
- # NOTE: we search for the optarg after we apply the rewrite rules below.
19
- # For example we need to use orderby not order_by
20
18
  @@optarg_offsets = {
21
19
  :replace => {:with_block => 0, :without => 1},
22
20
  :update => {:with_block => 0, :without => 1},
23
21
  :insert => 1,
24
22
  :delete => -1,
25
- :reduce => -1, :between => 2, :grouped_map_reduce => -1,
26
- :table => -1, :table_create => -1,
27
- :get_all => -1, :eq_join => -1,
28
- :javascript => -1, :filter => {:with_block => 0, :without => 1},
29
- :slice => -1, :during => -1, :orderby => -1,
30
- :iso8601 => -1, :index_create => -1
23
+ :reduce => -1,
24
+ :between => 2,
25
+ :table => -1,
26
+ :table_create => -1,
27
+ :get_all => -1,
28
+ :eq_join => -1,
29
+ :javascript => -1,
30
+ :filter => {:with_block => 0, :without => 1},
31
+ :slice => -1,
32
+ :during => -1,
33
+ :orderby => -1,
34
+ :group => -1,
35
+ :iso8601 => -1,
36
+ :index_create => -1
31
37
  }
32
- @@rewrites = {
33
- :< => :lt, :<= => :le, :> => :gt, :>= => :ge,
34
- :+ => :add, :- => :sub, :* => :mul, :/ => :div, :% => :mod,
35
- :"|" => :any, :or => :any,
36
- :"&" => :all, :and => :all,
37
- :order_by => :orderby,
38
- :group_by => :groupby,
39
- :concat_map => :concatmap,
40
- :for_each => :foreach,
41
- :js => :javascript,
42
- :type_of => :typeof
38
+ @@method_aliases = {
39
+ :lt => :<,
40
+ :le => :<=,
41
+ :gt => :>,
42
+ :ge => :>=,
43
+ :add => :+,
44
+ :sub => :-,
45
+ :mul => :*,
46
+ :div => :/,
47
+ :mod => :%,
48
+ :any => [:"|", :or],
49
+ :all => [:"&", :and],
50
+ :orderby => :order_by,
51
+ :concatmap => :concat_map,
52
+ :foreach => :for_each,
53
+ :javascript => :js,
54
+ :typeof => :type_of
43
55
  }
44
- @@allow_json = {:insert => true}
45
- def method_missing(m, *a, &b)
46
- unbound_if(m.to_s.downcase != m.to_s, m)
47
- bitop = [:"|", :"&"].include?(m) ? [m, a, b] : nil
48
- if [:<, :<=, :>, :>=, :+, :-, :*, :/, :%].include?(m)
49
- a.each {|arg|
50
- if arg.class == RQL && arg.bitop
51
- err = "Calling #{m} on result of infix bitwise operator:\n" +
52
- "#{arg.inspect}.\n" +
53
- "This is almost always a precedence error.\n" +
54
- "Note that `a < b | b < c` <==> `a < (b | b) < c`.\n" +
55
- "If you really want this behavior, use `.or` or `.and` instead."
56
- raise ArgumentError, err
57
- end
58
- }
59
- end
60
-
61
- old_m = m
62
- m = @@rewrites[m] || m
63
- begin
64
- termtype = Term::TermType.const_get(m.to_s.upcase)
65
- rescue NameError => e
66
- unbound_if(true, old_m)
67
- end
68
- unbound_if(!termtype, m)
56
+ @@allow_json = {:INSERT => true}
57
+
58
+ termtypes = Term::TermType.constants.map{ |c| c.to_sym }
59
+ termtypes.each {|termtype|
60
+
61
+ method = define_method(termtype.downcase){|*a, &b|
62
+ bitop = [:"|", :"&"].include?(__method__)
63
+
64
+ if [:<, :<=, :>, :>=, :+, :-, :*, :/, :%].include?(__method__)
65
+ a.each {|arg|
66
+ if arg.class == RQL && arg.bitop
67
+ err = "Calling #{__method__} on result of infix bitwise operator:\n" +
68
+ "#{arg.inspect}.\n" +
69
+ "This is almost always a precedence error.\n" +
70
+ "Note that `a < b | b < c` <==> `a < (b | b) < c`.\n" +
71
+ "If you really want this behavior, use `.or` or `.and` instead."
72
+ raise RqlDriverError, err
73
+ end
74
+ }
75
+ end
69
76
 
70
- if (opt_offset = @@optarg_offsets[m])
71
- if opt_offset.class == Hash
72
- opt_offset = opt_offset[b ? :with_block : :without]
77
+ if (opt_offset = @@optarg_offsets[termtype.downcase])
78
+ if opt_offset.class == Hash
79
+ opt_offset = opt_offset[b ? :with_block : :without]
80
+ end
81
+ # TODO: This should drop the Hash comparison or at least
82
+ # @@optarg_offsets should stop specifying -1, where possible.
83
+ # Any time one of these operations is changed to support a
84
+ # hash argument, we'll have to remember to fix
85
+ # @@optarg_offsets, otherwise.
86
+ optargs = a.delete_at(opt_offset) if a[opt_offset].class == Hash
73
87
  end
74
- # TODO: This should drop the Hash comparison or at least
75
- # @@optarg_offsets should stop specifying -1, where possible.
76
- # Any time one of these operations is changed to support a
77
- # hash argument, we'll have to remember to fix
78
- # @@optarg_offsets, otherwise.
79
- optargs = a.delete_at(opt_offset) if a[opt_offset].class == Hash
80
- end
81
88
 
82
- args = (@body ? [self] : []) + a + (b ? [new_func(&b)] : [])
89
+ args = (@body ? [self] : []) + a + (b ? [new_func(&b)] : [])
83
90
 
84
- t = Term.new
85
- t.type = termtype
86
- t.args = args.map{|x| RQL.new.expr(x, :allow_json => @@allow_json[m]).to_pb}
87
- t.optargs = (optargs || {}).map {|k,v|
88
- ap = Term::AssocPair.new
89
- ap.key = k.to_s
90
- ap.val = RQL.new.expr(v, :allow_json => @@allow_json[m]).to_pb
91
- ap
91
+ t = Term.new
92
+ t.type = Term::TermType.const_get(termtype)
93
+ t.args = args.map{|x| RQL.new.expr(x, :allow_json => @@allow_json[termtype]).to_pb}
94
+ t.optargs = (optargs || {}).map {|k,v|
95
+ ap = Term::AssocPair.new
96
+ ap.key = k.to_s
97
+ ap.val = RQL.new.expr(v, :allow_json => @@allow_json[termtype]).to_pb
98
+ ap
99
+ }
100
+ return RQL.new(t, bitop)
92
101
  }
93
- return RQL.new(t, bitop)
94
- end
95
102
 
96
- def group_by(*a, &b)
97
- a = [self] + a if @body
98
- RQL.new.method_missing(:group_by, a[0], a[1..-2], a[-1], &b)
99
- end
100
- def groupby(*a, &b); group_by(*a, &b); end
103
+ [*@@method_aliases[termtype.downcase]].each{|method_alias|
104
+ define_method method_alias, method
105
+ }
106
+ }
101
107
 
102
108
  def connect(*args, &b)
103
109
  unbound_if @body
@@ -105,33 +111,6 @@ module RethinkDB
105
111
  b ? begin b.call(c) ensure c.close end : c
106
112
  end
107
113
 
108
- def avg(attr)
109
- unbound_if @body
110
- {:AVG => attr}
111
- end
112
- def sum(attr)
113
- unbound_if @body
114
- {:SUM => attr}
115
- end
116
- def count(*a, &b)
117
- !@body && a == [] ? {:COUNT => true} : super(*a, &b)
118
- end
119
-
120
- def reduce(*a, &b)
121
- args = a.dup
122
- base_offset_front = (@body ? 0 : 1)
123
- base_offset_back = args.size - (b ? 1 : 2)
124
- if base_offset_front == base_offset_back
125
- args << {:base => args.delete_at(base_offset_front)}
126
- end
127
- super(*args, &b)
128
- end
129
-
130
- def grouped_map_reduce(*a, &b)
131
- a << {:base => a.delete_at(-2)} if a.size >= 2 && a[-2].class != Proc
132
- super(*a, &b)
133
- end
134
-
135
114
  def -@; RQL.new.sub(0, self); end
136
115
 
137
116
  def [](ind)
@@ -155,7 +134,6 @@ module RethinkDB
155
134
  their protobufs like: `query1.to_pb == query2.to_pb`."
156
135
  end
157
136
 
158
-
159
137
  def do(*args, &b)
160
138
  a = (@body ? [self] : []) + args.dup
161
139
  if a == [] && !b
data/lib/net.rb CHANGED
@@ -34,6 +34,12 @@ module RethinkDB
34
34
  raise ArgumentError, "`time_format` must be 'raw' or 'native' (got `#{tf}`)."
35
35
  end
36
36
  end
37
+ if (gf = opts[:group_format])
38
+ opts[:group_format] = (gf = gf.to_s)
39
+ if gf != 'raw' && gf != 'native'
40
+ raise ArgumentError, "`group_format` must be 'raw' or 'native' (got `#{gf}`)."
41
+ end
42
+ end
37
43
  if !c
38
44
  raise ArgumentError, "No connection specified!\n" \
39
45
  "Use `query.run(conn)` or `conn.repl(); query.run`."
@@ -199,10 +205,10 @@ module RethinkDB
199
205
  begin
200
206
  res = nil
201
207
  raise RqlRuntimeError, "Connection closed by server!" if not @listener
202
- @mutex.synchronize do
208
+ @mutex.synchronize {
203
209
  (@waiters[token] = ConditionVariable.new).wait(@mutex) if not @data[token]
204
210
  res = @data.delete token if @data[token]
205
- end
211
+ }
206
212
  raise RqlRuntimeError, "Connection closed by server!" if !@listener or !res
207
213
  return res
208
214
  rescue @abort_module::Abort => e
@@ -309,16 +315,16 @@ module RethinkDB
309
315
  end
310
316
 
311
317
  @listener.terminate if @listener
312
- @listener = Thread.new do
313
- loop do
318
+ @listener = Thread.new {
319
+ loop {
314
320
  begin
315
321
  response_length = @socket.read_exn(4).unpack('L<')[0]
316
322
  response = @socket.read_exn(response_length)
317
323
  rescue RqlRuntimeError => e
318
- @mutex.synchronize do
324
+ @mutex.synchronize {
319
325
  @listener = nil
320
326
  @waiters.each {|kv| kv[1].signal}
321
- end
327
+ }
322
328
  Thread.current.terminate
323
329
  abort("unreachable")
324
330
  end
@@ -329,7 +335,7 @@ module RethinkDB
329
335
  raise RqlRuntimeError, "Bad Protobuf #{response}, server is buggy."
330
336
  end
331
337
  if protob.token == -1
332
- @mutex.synchronize do
338
+ @mutex.synchronize {
333
339
  @waiters.keys.each {|k|
334
340
  @data[k] = protob
335
341
  if @waiters[k]
@@ -337,18 +343,18 @@ module RethinkDB
337
343
  cond.signal
338
344
  end
339
345
  }
340
- end
346
+ }
341
347
  else
342
- @mutex.synchronize do
348
+ @mutex.synchronize {
343
349
  @data[protob.token] = protob
344
350
  if @waiters[protob.token]
345
351
  cond = @waiters.delete protob.token
346
352
  cond.signal
347
353
  end
348
- end
354
+ }
349
355
  end
350
- end
351
- end
356
+ }
357
+ }
352
358
  end
353
359
  end
354
360
  end
data/lib/ql2.pb.rb CHANGED
@@ -200,6 +200,7 @@ class Term < ::ProtocolBuffers::Message
200
200
  CONTAINS = 93
201
201
  GET_FIELD = 31
202
202
  KEYS = 94
203
+ OBJECT = 143
203
204
  HAS_FIELDS = 32
204
205
  WITH_FIELDS = 96
205
206
  PLUCK = 33
@@ -216,8 +217,6 @@ class Term < ::ProtocolBuffers::Message
216
217
  IS_EMPTY = 86
217
218
  UNION = 44
218
219
  NTH = 45
219
- GROUPED_MAP_REDUCE = 46
220
- GROUPBY = 47
221
220
  INNER_JOIN = 48
222
221
  OUTER_JOIN = 49
223
222
  EQ_JOIN = 50
@@ -254,6 +253,8 @@ class Term < ::ProtocolBuffers::Message
254
253
  DESC = 74
255
254
  INFO = 79
256
255
  MATCH = 97
256
+ UPCASE = 141
257
+ DOWNCASE = 142
257
258
  SAMPLE = 81
258
259
  DEFAULT = 92
259
260
  JSON = 98
@@ -296,6 +297,13 @@ class Term < ::ProtocolBuffers::Message
296
297
  NOVEMBER = 124
297
298
  DECEMBER = 125
298
299
  LITERAL = 137
300
+ GROUP = 144
301
+ SUM = 145
302
+ AVG = 146
303
+ MIN = 147
304
+ MAX = 148
305
+ SPLIT = 149
306
+ UNGROUP = 150
299
307
  end
300
308
 
301
309
  set_fully_qualified_name "Term"
data/lib/rethinkdb.rb CHANGED
@@ -18,7 +18,6 @@ class Term::AssocPair
18
18
  end
19
19
 
20
20
  class Term
21
- attr_accessor :context
22
21
  attr_accessor :is_error
23
22
 
24
23
  def deep_dup
@@ -60,12 +59,13 @@ module RethinkDB
60
59
 
61
60
  module Utils
62
61
  def get_mname(i = 0)
63
- caller[i]=~/`(.*?)'/
64
- $1
62
+ caller(i, 1)[0] =~ /`(.*?)'/; $1
65
63
  end
66
64
  def unbound_if (x, name = nil)
67
- name = get_mname(1) if not name
68
- raise NoMethodError, "undefined method `#{name}'" if x
65
+ if x
66
+ name = get_mname(2) if not name
67
+ raise NoMethodError, "undefined method `#{name}'"
68
+ end
69
69
  end
70
70
  end
71
71
 
@@ -74,10 +74,9 @@ module RethinkDB
74
74
 
75
75
  attr_accessor :body, :bitop
76
76
 
77
- def initialize(body = nil, bitop = nil, context = nil)
77
+ def initialize(body = nil, bitop = nil)
78
78
  @body = body
79
79
  @bitop = bitop
80
- @body.context = (context || RPP.sanitize_context(caller)) if @body
81
80
  end
82
81
 
83
82
  def pp
data/lib/rpp.rb CHANGED
@@ -6,15 +6,7 @@ module RethinkDB
6
6
  @@termtype_to_str = Hash[
7
7
  Term::TermType.constants.map{|x| [Term::TermType.const_get(x), x.to_s]}
8
8
  ]
9
-
10
- def self.sanitize_context context
11
- if __FILE__ =~ /^(.*\/)[^\/]+.rb$/
12
- prefix = $1;
13
- context.reject{|x| x =~ /^#{prefix}/}
14
- else
15
- context
16
- end
17
- end
9
+ @@regex = if __FILE__ =~ /^(.*\/)[^\/]+.rb$/ then /^#{$1}/ else nil end
18
10
 
19
11
  def self.pp_int_optargs(q, optargs, pre_dot = false)
20
12
  q.text("r(") if pre_dot
@@ -77,7 +69,6 @@ module RethinkDB
77
69
  end
78
70
  def self.pp_int(q, term, pre_dot=false)
79
71
  q.text("\x7", 0) if term.is_error
80
- @@context = term.context if term.is_error
81
72
 
82
73
  if term.type == Term::TermType::DATUM
83
74
  res = pp_int_datum(q, term.datum, pre_dot)
@@ -165,7 +156,6 @@ module RethinkDB
165
156
 
166
157
  def self.pp term
167
158
  begin
168
- @@context = nil
169
159
  q = PrettyPrint.new
170
160
  pp_int(q, term, true)
171
161
  q.flush
@@ -180,11 +170,7 @@ module RethinkDB
180
170
  else
181
171
  line
182
172
  end
183
- }.flatten.join("\n") +
184
- (@@context ?
185
- "\nErroneous_Portion_Constructed:\n" +
186
- "#{@@context.map{|x| "\tfrom "+x}.join("\n")}" +
187
- "\nCalled:" : "")
173
+ }.flatten.join("\n")
188
174
  rescue Exception => e
189
175
  raise e
190
176
  "AN ERROR OCCURED DURING PRETTY-PRINTING:\n#{e.inspect}\n" +
data/lib/shim.rb CHANGED
@@ -2,9 +2,7 @@ require 'json'
2
2
  require 'time'
3
3
 
4
4
  module RethinkDB
5
-
6
5
  module Shim
7
-
8
6
  def self.is_reql_time(obj)
9
7
  obj.is_a? Hash and obj["$reql_type$"] == "TIME"
10
8
  end
@@ -15,26 +13,50 @@ module RethinkDB
15
13
  (tz && tz != "" && tz != "Z") ? t.getlocal(tz) : t.utc
16
14
  end
17
15
 
18
- def self.convert_times!(result)
16
+ def self.is_grouped_data(obj)
17
+ obj.is_a? Hash and obj["$reql_type$"] == "GROUPED_DATA"
18
+ end
19
+
20
+ def self.convert_grouped_data(obj, opts)
21
+ convert_reql_types!(obj['data'], opts)
22
+ Hash[obj["data"]]
23
+ end
24
+
25
+ def self.maybe_convert_type(obj, opts)
26
+ if opts[:time_format] != 'raw' && is_reql_time(obj)
27
+ convert_time(obj)
28
+ elsif opts[:group_format] != 'raw' && is_grouped_data(obj)
29
+ convert_grouped_data(obj, opts)
30
+ else
31
+ nil
32
+ end
33
+ end
34
+
35
+ def self.convert_reql_types!(result, opts)
19
36
  case result
20
37
  when Hash
21
- result.each { |k, v|
22
- if is_reql_time v
23
- result[k] = convert_time v
38
+ result.each {|k,v|
39
+ if (new_res = maybe_convert_type(v, opts))
40
+ result[k] = new_res
24
41
  else
25
- convert_times! v
42
+ convert_reql_types!(v, opts)
26
43
  end
27
44
  }
28
45
  when Array
29
- result.each_index { |i|
30
- if is_reql_time result[i]
31
- result[i] = convert_time result[i]
46
+ result.each_index {|i|
47
+ if (new_res = maybe_convert_type(result[i], opts))
48
+ result[i] = new_res;
32
49
  else
33
- convert_times! result[i]
50
+ convert_reql_types!(result[i], opts)
34
51
  end
35
52
  }
36
53
  end
37
- result
54
+ nil
55
+ end
56
+
57
+ def self.postprocess!(result, opts)
58
+ maybe_convert_type(result, opts) \
59
+ || (convert_reql_types!(result, opts); result)
38
60
  end
39
61
 
40
62
  def self.datum_to_native(d, opts)
@@ -48,18 +70,9 @@ module RethinkDB
48
70
  when dt::R_ARRAY then d.r_array.map{|d2| datum_to_native(d2, opts)}
49
71
  when dt::R_OBJECT then
50
72
  obj = Hash[d.r_object.map{|x| [x.key, datum_to_native(x.val, opts)]}]
51
- if opts[:time_format] != 'raw'
52
- is_reql_time(obj) ? convert_time(obj) : obj
53
- else
54
- obj
55
- end
73
+ postprocess!(obj, opts)
56
74
  when dt::R_JSON then
57
- result = JSON.parse("[" + d.r_str + "]")[0]
58
- if opts[:time_format] != 'raw'
59
- is_reql_time(result) ? convert_time(result) : convert_times!(result)
60
- else
61
- result
62
- end
75
+ postprocess!(JSON.parse("[" + d.r_str + "]")[0], opts)
63
76
  else raise RqlRuntimeError, "#{dt} Unimplemented."
64
77
  end
65
78
  end
@@ -121,7 +134,7 @@ module RethinkDB
121
134
  @@datum_types = [Fixnum, Float, Bignum, String, Symbol,
122
135
  TrueClass, FalseClass, NilClass]
123
136
 
124
- def any_to_pb(x, context)
137
+ def any_to_pb(x)
125
138
  return x.to_pb if x.class == RQL
126
139
  t = Term.new
127
140
  t.type = Term::TermType::JSON
@@ -136,23 +149,23 @@ module RethinkDB
136
149
  return (offset < 0 ? "-" : "+") + sprintf("%02d:%02d", raw_hours, raw_minutes);
137
150
  end
138
151
 
139
- def fast_expr(x, context, allow_json)
152
+ def fast_expr(x, allow_json)
140
153
  return x if x.class == RQL
141
154
  if @@datum_types.include?(x.class)
142
155
  return x if allow_json
143
- return RQL.new(Shim.native_to_datum_term(x), nil, context)
156
+ return RQL.new(Shim.native_to_datum_term(x), nil)
144
157
  end
145
158
 
146
159
  case x
147
160
  when Array
148
- args = x.map{|y| fast_expr(y, context, allow_json)}
161
+ args = x.map{|y| fast_expr(y, allow_json)}
149
162
  return x if allow_json && args.all?{|y| y.class != RQL}
150
163
  t = Term.new
151
164
  t.type = Term::TermType::MAKE_ARRAY
152
- t.args = args.map{|y| any_to_pb(y, context)}
153
- return RQL.new(t, nil, context)
165
+ t.args = args.map{|y| any_to_pb(y)}
166
+ return RQL.new(t, nil)
154
167
  when Hash
155
- kvs = x.map{|k,v| [k, fast_expr(v, context, allow_json)]}
168
+ kvs = x.map{|k,v| [k, fast_expr(v, allow_json)]}
156
169
  return x if allow_json && kvs.all? {|k,v|
157
170
  (k.class == String || k.class == Symbol) && v.class != RQL
158
171
  }
@@ -166,13 +179,13 @@ module RethinkDB
166
179
  raise RqlDriverError, "Object keys must be strings or symbols." +
167
180
  " (Got object `#{k.inspect}` of class `#{k.class}`.)"
168
181
  end
169
- ap.val = any_to_pb(v, context)
182
+ ap.val = any_to_pb(v)
170
183
  ap
171
184
  }
172
- return RQL.new(t, nil, context)
185
+ return RQL.new(t, nil)
173
186
  when Proc
174
- t = RQL.new(nil, nil, context).new_func(&x).to_pb
175
- return RQL.new(t, nil, context)
187
+ t = RQL.new(nil, nil).new_func(&x).to_pb
188
+ return RQL.new(t, nil)
176
189
  else raise RqlDriverError, "r.expr can't handle #{x.inspect} of type #{x.class}"
177
190
  end
178
191
  end
@@ -202,10 +215,9 @@ module RethinkDB
202
215
  def expr(x, opts={})
203
216
  allow_json = opts[:allow_json]
204
217
  unbound_if @body
205
- context = RPP.sanitize_context(caller)
206
- res = fast_expr(reql_typify(x), context, allow_json)
218
+ res = fast_expr(reql_typify(x), allow_json)
207
219
  return res if res.class == RQL
208
- return RQL.new(any_to_pb(res, context), nil, context)
220
+ return RQL.new(any_to_pb(res), nil)
209
221
  end
210
222
 
211
223
  def coerce(other)
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.11.0.2
4
+ version: 1.12.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-01-16 00:00:00.000000000 Z
11
+ date: 2014-03-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: json
@@ -60,11 +60,11 @@ extra_rdoc_files: []
60
60
  files:
61
61
  - lib/exc.rb
62
62
  - lib/ql2.pb.rb
63
- - lib/net.rb
64
63
  - lib/rethinkdb.rb
65
- - lib/shim.rb
66
- - lib/func.rb
67
64
  - lib/rpp.rb
65
+ - lib/func.rb
66
+ - lib/net.rb
67
+ - lib/shim.rb
68
68
  homepage: http://rethinkdb.com
69
69
  licenses:
70
70
  - Apache-2