couchbase 1.3.11 → 1.3.12

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,15 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: d306fbc4b3da87a77da5ba54614b55a6c461c489
4
- data.tar.gz: 8b34013f1f1cab6e859a84c5dbfe9a9cab26515f
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ NDQ0Yjg1YzRhN2E1NDM1YWY1Y2YyMDNjNzNhZjkyNjkyNmU4NDdmNw==
5
+ data.tar.gz: !binary |-
6
+ OGU0NjA5NzMwNmJlMzU3MmZjODNiNGUyZWY3ZDdhYTE4ZWEzMDNjZA==
5
7
  SHA512:
6
- metadata.gz: 0f404b5867f6a47fc00c651d0744edfabaa6ba824646d26b6a7e48e72e3da235099ed51f66541e5a0d2abf4a24acda6de2a1e3066098f3366d158a975b312992
7
- data.tar.gz: 2e9dca46a279117f96abf83a0a9c6914db91b99e136e27787270508780efde09436b461da3bf7481c5d39f2ed292faefce6a65d219f7b239e1fe613efd1f6a97
8
+ metadata.gz: !binary |-
9
+ ZGYzOGJhNjQ1Y2NlNjIxZGVkMTU3NGM0MjUwN2ZmM2VlNWJjYmI5MTY1ZjUx
10
+ MDNmYjNhYjk5OTIxOGQ2N2FkNzc2ODc2YWVmZmUzYWViZDZlMzM1YjU0ZDVj
11
+ OTczMzY3ZTgzOTFlOGIxMjg0NWJkNDhiZDZmMTQyOTkxMDNmOTc=
12
+ data.tar.gz: !binary |-
13
+ NWFjOGQyOGE0MGQwYTY2MDg4ZmI4NTQ5YjcwMDUxMDgyOGRlMDE2Mzk1OWY0
14
+ OTkwYTYyOWI3MmJhZjQzMjc3MDg0NzJiMzkwZmIyMWMyNTlkM2MxOWFlYzhm
15
+ ODY1YTIxMTkxMDczNDRlNDNkNDRkZGRmODIyYzRkZGU1MjQ1ODU=
@@ -3,6 +3,10 @@
3
3
  This document is a list of user visible feature changes and important
4
4
  bugfixes. Do not forget to update this doc in every important patch.
5
5
 
6
+ ## 1.3.12 (2015-04-21)
7
+
8
+ * [major] Experimental support of N1QL querires
9
+
6
10
  ## 1.3.11 (2015-01-08)
7
11
 
8
12
  * [minor] Update crossbuild system to use cmake for libcouchbase
@@ -32,6 +32,7 @@ VALUE cb_mDocument;
32
32
  VALUE cb_mPlain;
33
33
  VALUE cb_mMarshal;
34
34
  VALUE cb_mURI;
35
+ VALUE cb_mMultiJson;
35
36
  VALUE em_m;
36
37
 
37
38
  /* Symbols */
@@ -102,6 +103,8 @@ ID cb_sym_put;
102
103
  ID cb_sym_quiet;
103
104
  ID cb_sym_replace;
104
105
  ID cb_sym_replica;
106
+ ID cb_sym_rows;
107
+ ID cb_sym_meta;
105
108
  ID cb_sym_select;
106
109
  ID cb_sym_send_threshold;
107
110
  ID cb_sym_set;
@@ -132,6 +135,7 @@ ID cb_id_iv_error;
132
135
  ID cb_id_iv_flags;
133
136
  ID cb_id_iv_from_master;
134
137
  ID cb_id_iv_headers;
138
+ ID cb_id_iv_meta;
135
139
  ID cb_id_iv_inner_exception;
136
140
  ID cb_id_iv_key;
137
141
  ID cb_id_iv_node;
@@ -159,6 +163,7 @@ ID cb_id_verify_observe_options;
159
163
  VALUE cb_eBaseError;
160
164
  VALUE cb_eValueFormatError;
161
165
  VALUE cb_eHTTPError;
166
+ VALUE cb_eQuery;
162
167
 
163
168
  /* LCB_SUCCESS = 0x00 */
164
169
  /* LCB_AUTH_CONTINUE = 0x01 */
@@ -231,6 +236,7 @@ Init_couchbase_ext(void)
231
236
  /* just a holder for EventMachine module */
232
237
  em_m = 0;
233
238
 
239
+ cb_mMultiJson = rb_const_get(rb_cObject, rb_intern("MultiJson"));
234
240
  cb_mURI = rb_const_get(rb_cObject, rb_intern("URI"));
235
241
  cb_mCouchbase = rb_define_module("Couchbase");
236
242
  /* Document-method: libcouchbase_version
@@ -578,6 +584,15 @@ Init_couchbase_ext(void)
578
584
  */
579
585
  cb_eHTTPError = rb_define_class_under(cb_mError, "HTTP", cb_eBaseError);
580
586
  cb_id_iv_body = rb_intern("@body");
587
+
588
+ /* Document-class: Couchbase::Error::Query
589
+ * Query error with status code
590
+ *
591
+ * @since 1.2.0
592
+ */
593
+ cb_eQuery = rb_define_class_under(cb_mError, "Query", cb_eBaseError);
594
+ cb_id_iv_meta = rb_intern("@meta");
595
+
581
596
  /* Document-method: error
582
597
  *
583
598
  * The underlying libcouchbase library could return one of the following
@@ -1233,6 +1248,94 @@ Init_couchbase_ext(void)
1233
1248
  rb_define_method(cb_cBucket, "default_observe_timeout", cb_bucket_default_observe_timeout_get, 0);
1234
1249
  rb_define_method(cb_cBucket, "default_observe_timeout=", cb_bucket_default_observe_timeout_set, 1);
1235
1250
 
1251
+ /* Document-method: query
1252
+ *
1253
+ * @since 1.3.12
1254
+ *
1255
+ * Perform N1QL query to the cluster. This API is experimental and
1256
+ * subject to change in future. Read more info at http://query.couchbase.com
1257
+ *
1258
+ * @example Simple N1QL query
1259
+ * connection.query('select "hello world"')
1260
+ * #=>
1261
+ * {
1262
+ * :rows => [
1263
+ * [0] {
1264
+ * "$1" => "hello world"
1265
+ * }
1266
+ * ],
1267
+ * :meta => {
1268
+ * "requestID" => "f0345617-f809-4b75-8340-acaa412b9f3d",
1269
+ * "signature" => {
1270
+ * "$1" => "string"
1271
+ * },
1272
+ * "results" => [],
1273
+ * "status" => "success",
1274
+ * "metrics" => {
1275
+ * "elapsedTime" => "1.582327ms",
1276
+ * "executionTime" => "1.470542ms",
1277
+ * "resultCount" => 1,
1278
+ * "resultSize" => 43
1279
+ * }
1280
+ * }
1281
+ * }
1282
+ *
1283
+ * @example create primary index
1284
+ * connection.query('create primary index on `travel-sample` using view')
1285
+ * #=>
1286
+ * {
1287
+ * :rows => [],
1288
+ * :meta => {
1289
+ * "requestID" => "597882ef-3c2b-4ac9-8f08-275fece46645",
1290
+ * "signature" => nil,
1291
+ * "results" => [],
1292
+ * "status" => "success",
1293
+ * "metrics" => {
1294
+ * "elapsedTime" => "1.550941465s",
1295
+ * "executionTime" => "1.550856413s",
1296
+ * "resultCount" => 0,
1297
+ * "resultSize" => 0
1298
+ * }
1299
+ * }
1300
+ * }
1301
+ *
1302
+ * @example select first airline
1303
+ * connection.query('select * from `travel-sample` where type = "airline" limit 1')
1304
+ * #=> {
1305
+ * :rows => [
1306
+ * [0] {
1307
+ * "travel-sample" => {
1308
+ * "callsign" => "Orbit",
1309
+ * "country" => "United States",
1310
+ * "iata" => nil,
1311
+ * "icao" => "OBT",
1312
+ * "id" => 16932,
1313
+ * "name" => "Orbit Airlines",
1314
+ * "type" => "airline"
1315
+ * }
1316
+ * }
1317
+ * ],
1318
+ * :meta => {
1319
+ * "requestID" => "f999550c-70b0-43f6-b76d-8cde03288847",
1320
+ * "signature" => {
1321
+ * "*" => "*"
1322
+ * },
1323
+ * "results" => [],
1324
+ * "status" => "success",
1325
+ * "metrics" => {
1326
+ * "elapsedTime" => "501.048085ms",
1327
+ * "executionTime" => "500.991849ms",
1328
+ * "resultCount" => 1,
1329
+ * "resultSize" => 303
1330
+ * }
1331
+ * }
1332
+ * }
1333
+ * @param [String] query string which contains the N1QL query
1334
+ *
1335
+ * @return [Hash] result object with :rows and :meta keys
1336
+ */
1337
+ rb_define_method(cb_cBucket, "query", cb_bucket_query, -1);
1338
+
1236
1339
  cb_cCouchRequest = rb_define_class_under(cb_cBucket, "CouchRequest", rb_cObject);
1237
1340
  rb_define_alloc_func(cb_cCouchRequest, cb_http_request_alloc);
1238
1341
 
@@ -1350,6 +1453,8 @@ Init_couchbase_ext(void)
1350
1453
  cb_sym_quiet = ID2SYM(rb_intern("quiet"));
1351
1454
  cb_sym_replace = ID2SYM(rb_intern("replace"));
1352
1455
  cb_sym_replica = ID2SYM(rb_intern("replica"));
1456
+ cb_sym_rows = ID2SYM(rb_intern("rows"));
1457
+ cb_sym_meta = ID2SYM(rb_intern("meta"));
1353
1458
  cb_sym_select = ID2SYM(rb_intern("select"));
1354
1459
  cb_sym_send_threshold = ID2SYM(rb_intern("send_threshold"));
1355
1460
  cb_sym_set = ID2SYM(rb_intern("set"));
@@ -53,6 +53,7 @@ extern hrtime_t gethrtime(void);
53
53
  #endif
54
54
 
55
55
  #include <libcouchbase/couchbase.h>
56
+ #include <libcouchbase/n1ql.h>
56
57
 
57
58
  #ifdef HAVE_RUBY_ENCODING_H
58
59
  #include "ruby/encoding.h"
@@ -194,6 +195,7 @@ extern VALUE cb_mDocument;
194
195
  extern VALUE cb_mPlain;
195
196
  extern VALUE cb_mMarshal;
196
197
  extern VALUE cb_mURI;
198
+ extern VALUE cb_mMultiJson;
197
199
  extern VALUE em_m;
198
200
 
199
201
  /* Symbols */
@@ -264,6 +266,8 @@ extern ID cb_sym_put;
264
266
  extern ID cb_sym_quiet;
265
267
  extern ID cb_sym_replace;
266
268
  extern ID cb_sym_replica;
269
+ extern ID cb_sym_rows;
270
+ extern ID cb_sym_meta;
267
271
  extern ID cb_sym_select;
268
272
  extern ID cb_sym_send_threshold;
269
273
  extern ID cb_sym_set;
@@ -294,6 +298,7 @@ extern ID cb_id_iv_error;
294
298
  extern ID cb_id_iv_flags;
295
299
  extern ID cb_id_iv_from_master;
296
300
  extern ID cb_id_iv_headers;
301
+ extern ID cb_id_iv_meta;
297
302
  extern ID cb_id_iv_inner_exception;
298
303
  extern ID cb_id_iv_key;
299
304
  extern ID cb_id_iv_node;
@@ -321,6 +326,7 @@ extern ID cb_id_verify_observe_options;
321
326
  extern VALUE cb_eBaseError;
322
327
  extern VALUE cb_eValueFormatError;
323
328
  extern VALUE cb_eHTTPError;
329
+ extern VALUE cb_eQuery;
324
330
  /* LCB_SUCCESS = 0x00 */
325
331
  /* LCB_AUTH_CONTINUE = 0x01 */
326
332
  extern VALUE cb_eAuthError; /* LCB_AUTH_ERROR = 0x02 */
@@ -418,6 +424,7 @@ VALUE cb_bucket_get(int argc, VALUE *argv, VALUE self);
418
424
  VALUE cb_bucket_incr(int argc, VALUE *argv, VALUE self);
419
425
  VALUE cb_bucket_decr(int argc, VALUE *argv, VALUE self);
420
426
  VALUE cb_bucket_unlock(int argc, VALUE *argv, VALUE self);
427
+ VALUE cb_bucket_query(int argc, VALUE *argv, VALUE self);
421
428
  VALUE cb_bucket_run(int argc, VALUE *argv, VALUE self);
422
429
  VALUE cb_bucket_stop(VALUE self);
423
430
  VALUE cb_bucket_version(int argc, VALUE *argv, VALUE self);
@@ -0,0 +1,117 @@
1
+ /*
2
+ * Copyright 2015 Couchbase, Inc.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+
17
+ #include "couchbase_ext.h"
18
+
19
+ static void n1ql_callback(lcb_t handle, int type, const lcb_RESPN1QL *resp)
20
+ {
21
+ struct cb_context_st *ctx = (struct cb_context_st *)resp->cookie;
22
+ VALUE res = ctx->rv;
23
+ if (resp->rflags & LCB_RESP_F_FINAL) {
24
+ if (resp->rc != LCB_SUCCESS) {
25
+ char buf[512];
26
+ char *p = buf, *end = buf + 512;
27
+ VALUE meta = Qnil;
28
+
29
+ p += snprintf(buf, 512, "failed to perform query, rc = 0x%02x", resp->rc);
30
+ if (resp->htresp) {
31
+ p += snprintf(p, end - p, ". Inner HTTP requeest failed (rc = 0x%02x, http_status = %d)",
32
+ resp->htresp->rc, resp->htresp->htstatus);
33
+ }
34
+ if (resp->row) {
35
+ VALUE errors;
36
+ meta = rb_funcall(cb_mMultiJson, cb_id_load, 1, STR_NEW(resp->row, resp->nrow));
37
+ errors = rb_hash_lookup2(meta, STR_NEW_CSTR("errors"), Qnil);
38
+ if (errors != Qnil) {
39
+ int i, len;
40
+ p += snprintf(p, end - p, ": ");
41
+ len = RARRAY_LEN(errors);
42
+ for (i = 0; i < len; i++) {
43
+ VALUE error = rb_ary_entry(errors, i);
44
+ int code = FIX2INT(rb_hash_lookup2(error, STR_NEW_CSTR("code"), INT2FIX(0)));
45
+ char *msg = RSTRING_PTR(rb_hash_lookup2(error, STR_NEW_CSTR("msg"), STR_NEW_CSTR("")));
46
+ p += snprintf(p, end - p, "%s (%d)", msg, code);
47
+ if (len > 1 && i < len - 1) {
48
+ p += snprintf(p, end - p, ",");
49
+ }
50
+ }
51
+ }
52
+ }
53
+ ctx->exception = rb_exc_new2(cb_eQuery, buf);
54
+ rb_ivar_set(ctx->exception, cb_id_iv_error, INT2FIX(resp->rc));
55
+ rb_ivar_set(ctx->exception, cb_id_iv_status, INT2FIX(resp->htresp->htstatus));
56
+ rb_ivar_set(ctx->exception, cb_id_iv_meta, meta);
57
+ }
58
+ if (resp->row) {
59
+ rb_hash_aset(res, cb_sym_meta, rb_funcall(cb_mMultiJson, cb_id_load, 1, STR_NEW(resp->row, resp->nrow)));
60
+ }
61
+ } else {
62
+ /* TODO: protect from exceptions from MultiJson */
63
+ VALUE rows = rb_hash_aref(res, cb_sym_rows);
64
+ rb_ary_push(rows, rb_funcall(cb_mMultiJson, cb_id_load, 1, STR_NEW(resp->row, resp->nrow)));
65
+ }
66
+ (void)handle;
67
+ (void)type;
68
+ }
69
+
70
+ VALUE
71
+ cb_bucket_query(int argc, VALUE *argv, VALUE self)
72
+ {
73
+ struct cb_bucket_st *bucket = DATA_PTR(self);
74
+ struct cb_context_st *ctx;
75
+ lcb_N1QLPARAMS *params = lcb_n1p_new();
76
+ lcb_CMDN1QL cmd = { 0 };
77
+ lcb_error_t rc;
78
+ VALUE qstr, proc, opts, args;
79
+ VALUE exc, rv;
80
+
81
+ rb_scan_args(argc, argv, "1*&", &qstr, &args, &proc);
82
+
83
+ rc = lcb_n1p_setquery(params, RSTRING_PTR(qstr), RSTRING_LEN(qstr), LCB_N1P_QUERY_STATEMENT);
84
+ if (rc != LCB_SUCCESS) {
85
+ rb_raise(cb_eQuery, "cannot set query for N1QL command: %s", lcb_strerror(bucket->handle, rc));
86
+ }
87
+
88
+ rc = lcb_n1p_mkcmd(params, &cmd);
89
+ if (rc != LCB_SUCCESS) {
90
+ rb_raise(cb_eQuery, "cannot construct N1QL command: %s", lcb_strerror(bucket->handle, rc));
91
+ }
92
+
93
+ ctx = cb_context_alloc_common(bucket, proc, 1);
94
+ ctx->rv = rb_hash_new();
95
+ rb_hash_aset(ctx->rv, cb_sym_rows, rb_ary_new());
96
+ rb_hash_aset(ctx->rv, cb_sym_meta, Qnil);
97
+ cmd.callback = n1ql_callback;
98
+ rc = lcb_n1ql_query(bucket->handle, (void *)ctx, &cmd);
99
+ if (rc != LCB_SUCCESS) {
100
+ rb_raise(cb_eQuery, "cannot excute N1QL command: %s\n", lcb_strerror(bucket->handle, rc));
101
+ }
102
+ lcb_n1p_free(params);
103
+ lcb_wait(bucket->handle);
104
+
105
+ exc = ctx->exception;
106
+ rv = ctx->rv;
107
+ cb_context_free(ctx);
108
+ if (exc != Qnil) {
109
+ rb_exc_raise(exc);
110
+ }
111
+ exc = bucket->exception;
112
+ if (exc != Qnil) {
113
+ bucket->exception = Qnil;
114
+ rb_exc_raise(exc);
115
+ }
116
+ return rv;
117
+ }
@@ -17,5 +17,5 @@
17
17
 
18
18
  # Couchbase ruby client
19
19
  module Couchbase
20
- VERSION = '1.3.11'
20
+ VERSION = '1.3.12'
21
21
  end
@@ -137,7 +137,7 @@ task 'package:windows' => ['package', 'lib/couchbase_ext.rb'] do
137
137
  ENV['TARGET'] = platform.name
138
138
  rm_rf('tmp/ ports/')
139
139
  mkdir_p('ports')
140
- recipe = MiniPortile.new('libcouchbase', '2.4.5')
140
+ recipe = MiniPortile.new('libcouchbase', '2.4.9')
141
141
  recipe.host = platform.host
142
142
  recipe.files << "http://packages.couchbase.com/clients/c/libcouchbase-#{recipe.version}.tar.gz"
143
143
  recipe.configure_options.push('--disable-cxx',
@@ -213,4 +213,12 @@ class TestStore < MiniTest::Test
213
213
  assert_equal ["bar", "foo"], connection.get(uniq_id(:a), uniq_id(:z))
214
214
  assert res.is_a?(Hash)
215
215
  end
216
+
217
+ def test_append_format
218
+ connection = Couchbase.new(:hostname => @mock.host, :port => @mock.port)
219
+ assert_equal :document, connection.default_format
220
+ connection.set(uniq_id, 'bar', :format => :plain)
221
+ connection.append(uniq_id, 'baz', :format => :plain)
222
+ assert_equal 'barbaz', connection.get(uniq_id)
223
+ end
216
224
  end
metadata CHANGED
@@ -1,203 +1,203 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: couchbase
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.11
4
+ version: 1.3.12
5
5
  platform: ruby
6
6
  authors:
7
7
  - Couchbase
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-01-08 00:00:00.000000000 Z
11
+ date: 2015-04-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: yaji
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ~>
18
18
  - !ruby/object:Gem::Version
19
19
  version: '0.3'
20
- - - ">="
20
+ - - ! '>='
21
21
  - !ruby/object:Gem::Version
22
22
  version: 0.3.2
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
26
26
  requirements:
27
- - - "~>"
27
+ - - ~>
28
28
  - !ruby/object:Gem::Version
29
29
  version: '0.3'
30
- - - ">="
30
+ - - ! '>='
31
31
  - !ruby/object:Gem::Version
32
32
  version: 0.3.2
33
33
  - !ruby/object:Gem::Dependency
34
34
  name: multi_json
35
35
  requirement: !ruby/object:Gem::Requirement
36
36
  requirements:
37
- - - "~>"
37
+ - - ~>
38
38
  - !ruby/object:Gem::Version
39
39
  version: '1.0'
40
40
  type: :runtime
41
41
  prerelease: false
42
42
  version_requirements: !ruby/object:Gem::Requirement
43
43
  requirements:
44
- - - "~>"
44
+ - - ~>
45
45
  - !ruby/object:Gem::Version
46
46
  version: '1.0'
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: connection_pool
49
49
  requirement: !ruby/object:Gem::Requirement
50
50
  requirements:
51
- - - "<="
51
+ - - <=
52
52
  - !ruby/object:Gem::Version
53
53
  version: 3.0.0
54
- - - ">="
54
+ - - ! '>='
55
55
  - !ruby/object:Gem::Version
56
56
  version: 1.0.0
57
57
  type: :runtime
58
58
  prerelease: false
59
59
  version_requirements: !ruby/object:Gem::Requirement
60
60
  requirements:
61
- - - "<="
61
+ - - <=
62
62
  - !ruby/object:Gem::Version
63
63
  version: 3.0.0
64
- - - ">="
64
+ - - ! '>='
65
65
  - !ruby/object:Gem::Version
66
66
  version: 1.0.0
67
67
  - !ruby/object:Gem::Dependency
68
68
  name: rake
69
69
  requirement: !ruby/object:Gem::Requirement
70
70
  requirements:
71
- - - ">="
71
+ - - ! '>='
72
72
  - !ruby/object:Gem::Version
73
73
  version: '0'
74
74
  type: :development
75
75
  prerelease: false
76
76
  version_requirements: !ruby/object:Gem::Requirement
77
77
  requirements:
78
- - - ">="
78
+ - - ! '>='
79
79
  - !ruby/object:Gem::Version
80
80
  version: '0'
81
81
  - !ruby/object:Gem::Dependency
82
82
  name: minitest
83
83
  requirement: !ruby/object:Gem::Requirement
84
84
  requirements:
85
- - - "~>"
85
+ - - ~>
86
86
  - !ruby/object:Gem::Version
87
87
  version: '5.0'
88
- - - ">="
88
+ - - ! '>='
89
89
  - !ruby/object:Gem::Version
90
90
  version: 5.0.4
91
91
  type: :development
92
92
  prerelease: false
93
93
  version_requirements: !ruby/object:Gem::Requirement
94
94
  requirements:
95
- - - "~>"
95
+ - - ~>
96
96
  - !ruby/object:Gem::Version
97
97
  version: '5.0'
98
- - - ">="
98
+ - - ! '>='
99
99
  - !ruby/object:Gem::Version
100
100
  version: 5.0.4
101
101
  - !ruby/object:Gem::Dependency
102
102
  name: rake-compiler
103
103
  requirement: !ruby/object:Gem::Requirement
104
104
  requirements:
105
- - - "~>"
105
+ - - ~>
106
106
  - !ruby/object:Gem::Version
107
107
  version: '0.7'
108
- - - ">="
108
+ - - ! '>='
109
109
  - !ruby/object:Gem::Version
110
110
  version: 0.7.5
111
111
  type: :development
112
112
  prerelease: false
113
113
  version_requirements: !ruby/object:Gem::Requirement
114
114
  requirements:
115
- - - "~>"
115
+ - - ~>
116
116
  - !ruby/object:Gem::Version
117
117
  version: '0.7'
118
- - - ">="
118
+ - - ! '>='
119
119
  - !ruby/object:Gem::Version
120
120
  version: 0.7.5
121
121
  - !ruby/object:Gem::Dependency
122
122
  name: mini_portile
123
123
  requirement: !ruby/object:Gem::Requirement
124
124
  requirements:
125
- - - "~>"
125
+ - - ~>
126
126
  - !ruby/object:Gem::Version
127
127
  version: '0.5'
128
- - - ">="
128
+ - - ! '>='
129
129
  - !ruby/object:Gem::Version
130
130
  version: 0.5.2
131
131
  type: :development
132
132
  prerelease: false
133
133
  version_requirements: !ruby/object:Gem::Requirement
134
134
  requirements:
135
- - - "~>"
135
+ - - ~>
136
136
  - !ruby/object:Gem::Version
137
137
  version: '0.5'
138
- - - ">="
138
+ - - ! '>='
139
139
  - !ruby/object:Gem::Version
140
140
  version: 0.5.2
141
141
  - !ruby/object:Gem::Dependency
142
142
  name: yajl-ruby
143
143
  requirement: !ruby/object:Gem::Requirement
144
144
  requirements:
145
- - - "~>"
145
+ - - ~>
146
146
  - !ruby/object:Gem::Version
147
147
  version: '1.1'
148
- - - ">="
148
+ - - ! '>='
149
149
  - !ruby/object:Gem::Version
150
150
  version: 1.1.0
151
151
  type: :development
152
152
  prerelease: false
153
153
  version_requirements: !ruby/object:Gem::Requirement
154
154
  requirements:
155
- - - "~>"
155
+ - - ~>
156
156
  - !ruby/object:Gem::Version
157
157
  version: '1.1'
158
- - - ">="
158
+ - - ! '>='
159
159
  - !ruby/object:Gem::Version
160
160
  version: 1.1.0
161
161
  - !ruby/object:Gem::Dependency
162
162
  name: activesupport
163
163
  requirement: !ruby/object:Gem::Requirement
164
164
  requirements:
165
- - - ">="
165
+ - - ! '>='
166
166
  - !ruby/object:Gem::Version
167
167
  version: '0'
168
168
  type: :development
169
169
  prerelease: false
170
170
  version_requirements: !ruby/object:Gem::Requirement
171
171
  requirements:
172
- - - ">="
172
+ - - ! '>='
173
173
  - !ruby/object:Gem::Version
174
174
  version: '0'
175
175
  - !ruby/object:Gem::Dependency
176
176
  name: eventmachine
177
177
  requirement: !ruby/object:Gem::Requirement
178
178
  requirements:
179
- - - ">="
179
+ - - ! '>='
180
180
  - !ruby/object:Gem::Version
181
181
  version: '0'
182
182
  type: :development
183
183
  prerelease: false
184
184
  version_requirements: !ruby/object:Gem::Requirement
185
185
  requirements:
186
- - - ">="
186
+ - - ! '>='
187
187
  - !ruby/object:Gem::Version
188
188
  version: '0'
189
189
  - !ruby/object:Gem::Dependency
190
190
  name: em-synchrony
191
191
  requirement: !ruby/object:Gem::Requirement
192
192
  requirements:
193
- - - ">="
193
+ - - ! '>='
194
194
  - !ruby/object:Gem::Version
195
195
  version: '0'
196
196
  type: :development
197
197
  prerelease: false
198
198
  version_requirements: !ruby/object:Gem::Requirement
199
199
  requirements:
200
- - - ">="
200
+ - - ! '>='
201
201
  - !ruby/object:Gem::Version
202
202
  version: '0'
203
203
  description: The official client library for use with Couchbase Server.
@@ -207,9 +207,9 @@ extensions:
207
207
  - ext/couchbase_ext/extconf.rb
208
208
  extra_rdoc_files: []
209
209
  files:
210
- - ".gitignore"
211
- - ".travis.yml"
212
- - ".yardopts"
210
+ - .gitignore
211
+ - .travis.yml
212
+ - .yardopts
213
213
  - CONTRIBUTING.markdown
214
214
  - Gemfile
215
215
  - LICENSE
@@ -245,6 +245,7 @@ files:
245
245
  - ext/couchbase_ext/gethrtime.c
246
246
  - ext/couchbase_ext/http.c
247
247
  - ext/couchbase_ext/multithread_plugin.c
248
+ - ext/couchbase_ext/n1ql.c
248
249
  - ext/couchbase_ext/observe.c
249
250
  - ext/couchbase_ext/result.c
250
251
  - ext/couchbase_ext/stats.c
@@ -307,17 +308,17 @@ require_paths:
307
308
  - lib
308
309
  required_ruby_version: !ruby/object:Gem::Requirement
309
310
  requirements:
310
- - - ">="
311
+ - - ! '>='
311
312
  - !ruby/object:Gem::Version
312
313
  version: '0'
313
314
  required_rubygems_version: !ruby/object:Gem::Requirement
314
315
  requirements:
315
- - - ">="
316
+ - - ! '>='
316
317
  - !ruby/object:Gem::Version
317
318
  version: '0'
318
319
  requirements: []
319
320
  rubyforge_project:
320
- rubygems_version: 2.3.0
321
+ rubygems_version: 2.2.1
321
322
  signing_key:
322
323
  specification_version: 4
323
324
  summary: Couchbase ruby driver