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 +13 -5
- data/RELEASE_NOTES.markdown +4 -0
- data/ext/couchbase_ext/couchbase_ext.c +105 -0
- data/ext/couchbase_ext/couchbase_ext.h +7 -0
- data/ext/couchbase_ext/n1ql.c +117 -0
- data/lib/couchbase/version.rb +1 -1
- data/tasks/compile.rake +1 -1
- data/test/test_store.rb +8 -0
- metadata +43 -42
checksums.yaml
CHANGED
@@ -1,7 +1,15 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
|
2
|
+
!binary "U0hBMQ==":
|
3
|
+
metadata.gz: !binary |-
|
4
|
+
NDQ0Yjg1YzRhN2E1NDM1YWY1Y2YyMDNjNzNhZjkyNjkyNmU4NDdmNw==
|
5
|
+
data.tar.gz: !binary |-
|
6
|
+
OGU0NjA5NzMwNmJlMzU3MmZjODNiNGUyZWY3ZDdhYTE4ZWEzMDNjZA==
|
5
7
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
|
8
|
+
metadata.gz: !binary |-
|
9
|
+
ZGYzOGJhNjQ1Y2NlNjIxZGVkMTU3NGM0MjUwN2ZmM2VlNWJjYmI5MTY1ZjUx
|
10
|
+
MDNmYjNhYjk5OTIxOGQ2N2FkNzc2ODc2YWVmZmUzYWViZDZlMzM1YjU0ZDVj
|
11
|
+
OTczMzY3ZTgzOTFlOGIxMjg0NWJkNDhiZDZmMTQyOTkxMDNmOTc=
|
12
|
+
data.tar.gz: !binary |-
|
13
|
+
NWFjOGQyOGE0MGQwYTY2MDg4ZmI4NTQ5YjcwMDUxMDgyOGRlMDE2Mzk1OWY0
|
14
|
+
OTkwYTYyOWI3MmJhZjQzMjc3MDg0NzJiMzkwZmIyMWMyNTlkM2MxOWFlYzhm
|
15
|
+
ODY1YTIxMTkxMDczNDRlNDNkNDRkZGRmODIyYzRkZGU1MjQ1ODU=
|
data/RELEASE_NOTES.markdown
CHANGED
@@ -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
|
+
}
|
data/lib/couchbase/version.rb
CHANGED
data/tasks/compile.rake
CHANGED
@@ -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.
|
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',
|
data/test/test_store.rb
CHANGED
@@ -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.
|
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-
|
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
|
-
-
|
211
|
-
-
|
212
|
-
-
|
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.
|
321
|
+
rubygems_version: 2.2.1
|
321
322
|
signing_key:
|
322
323
|
specification_version: 4
|
323
324
|
summary: Couchbase ruby driver
|