couchbase 1.3.11 → 1.3.12

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,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