couchbase 1.1.3 → 1.1.4
Sign up to get free protection for your applications and to get access to all the features.
- data/HISTORY.markdown +6 -0
- data/ext/couchbase_ext/couchbase_ext.c +52 -24
- data/lib/couchbase/version.rb +1 -1
- data/tasks/compile.rake +4 -4
- data/tasks/test.rake +1 -1
- metadata +136 -133
data/HISTORY.markdown
CHANGED
@@ -1,3 +1,9 @@
|
|
1
|
+
## 1.1.4 / 2012-08-30
|
2
|
+
|
3
|
+
* RCBC-70 return binary keys using Encoding.external value (thanks to Alex Leverington)
|
4
|
+
* Switch to rbenv because RVM doesn't work with tclsh
|
5
|
+
* [backport] RCBC-37 Bootstrapping using multiple nodes
|
6
|
+
|
1
7
|
## 1.1.3 / 2012-07-27
|
2
8
|
|
3
9
|
* RCBC-59 Replicate flags in Bucket#cas operation
|
@@ -24,6 +24,15 @@
|
|
24
24
|
#include <libcouchbase/couchbase.h>
|
25
25
|
#include "couchbase_config.h"
|
26
26
|
|
27
|
+
#ifdef HAVE_RUBY_ENCODING_H
|
28
|
+
#include "ruby/encoding.h"
|
29
|
+
#define STR_NEW(ptr, len) rb_external_str_new((ptr), (len))
|
30
|
+
#define STR_NEW_CSTR(str) rb_external_str_new_cstr((str))
|
31
|
+
#else
|
32
|
+
#define STR_NEW(ptr, len) rb_str_new((ptr), (len))
|
33
|
+
#define STR_NEW_CSTR(str) rb_str_new2((str))
|
34
|
+
#endif
|
35
|
+
|
27
36
|
#ifdef HAVE_STDARG_PROTOTYPES
|
28
37
|
#include <stdarg.h>
|
29
38
|
#define va_init_list(a,b) va_start(a,b)
|
@@ -34,9 +43,9 @@
|
|
34
43
|
|
35
44
|
#define debug_object(OBJ) \
|
36
45
|
rb_funcall(rb_stderr, rb_intern("print"), 1, rb_funcall(OBJ, rb_intern("object_id"), 0)); \
|
37
|
-
rb_funcall(rb_stderr, rb_intern("print"), 1,
|
46
|
+
rb_funcall(rb_stderr, rb_intern("print"), 1, STR_NEW_CSTR(" ")); \
|
38
47
|
rb_funcall(rb_stderr, rb_intern("print"), 1, rb_funcall(OBJ, rb_intern("class"), 0)); \
|
39
|
-
rb_funcall(rb_stderr, rb_intern("print"), 1,
|
48
|
+
rb_funcall(rb_stderr, rb_intern("print"), 1, STR_NEW_CSTR(" ")); \
|
40
49
|
rb_funcall(rb_stderr, rb_intern("puts"), 1, rb_funcall(OBJ, rb_intern("inspect"), 0));
|
41
50
|
|
42
51
|
#define FMT_MASK 0x3
|
@@ -65,6 +74,7 @@ typedef struct
|
|
65
74
|
VALUE exception; /* error delivered by error_callback */
|
66
75
|
VALUE on_error_proc; /* is using to deliver errors in async mode */
|
67
76
|
VALUE object_space;
|
77
|
+
char *node_list;
|
68
78
|
} bucket_t;
|
69
79
|
|
70
80
|
typedef struct
|
@@ -115,6 +125,7 @@ static ID sym_add,
|
|
115
125
|
sym_increment,
|
116
126
|
sym_initial,
|
117
127
|
sym_marshal,
|
128
|
+
sym_node_list,
|
118
129
|
sym_password,
|
119
130
|
sym_plain,
|
120
131
|
sym_pool,
|
@@ -455,7 +466,7 @@ unify_key(VALUE key)
|
|
455
466
|
case T_STRING:
|
456
467
|
return key;
|
457
468
|
case T_SYMBOL:
|
458
|
-
return
|
469
|
+
return STR_NEW_CSTR(rb_id2name(SYM2ID(key)));
|
459
470
|
default: /* call #to_str or raise error */
|
460
471
|
return StringValue(key);
|
461
472
|
}
|
@@ -563,7 +574,7 @@ storage_callback(libcouchbase_t handle, const void *cookie,
|
|
563
574
|
|
564
575
|
bucket->seqno--;
|
565
576
|
|
566
|
-
k =
|
577
|
+
k = STR_NEW((const char*)key, nkey);
|
567
578
|
c = cas > 0 ? ULL2NUM(cas) : Qnil;
|
568
579
|
switch(operation) {
|
569
580
|
case LIBCOUCHBASE_ADD:
|
@@ -624,7 +635,7 @@ delete_callback(libcouchbase_t handle, const void *cookie,
|
|
624
635
|
|
625
636
|
bucket->seqno--;
|
626
637
|
|
627
|
-
k =
|
638
|
+
k = STR_NEW((const char*)key, nkey);
|
628
639
|
if (error != LIBCOUCHBASE_KEY_ENOENT || !ctx->quiet) {
|
629
640
|
exc = cb_check_error(error, "failed to remove value", k);
|
630
641
|
if (exc != Qnil) {
|
@@ -666,7 +677,7 @@ get_callback(libcouchbase_t handle, const void *cookie,
|
|
666
677
|
|
667
678
|
bucket->seqno--;
|
668
679
|
|
669
|
-
k =
|
680
|
+
k = STR_NEW((const char*)key, nkey);
|
670
681
|
if (error != LIBCOUCHBASE_KEY_ENOENT || !ctx->quiet) {
|
671
682
|
exc = cb_check_error(error, "failed to get value", k);
|
672
683
|
if (exc != Qnil) {
|
@@ -682,7 +693,7 @@ get_callback(libcouchbase_t handle, const void *cookie,
|
|
682
693
|
c = ULL2NUM(cas);
|
683
694
|
v = Qnil;
|
684
695
|
if (nbytes != 0) {
|
685
|
-
v = decode_value(
|
696
|
+
v = decode_value(STR_NEW((const char*)bytes, nbytes), flags, ctx->force_format);
|
686
697
|
if (v == Qundef) {
|
687
698
|
if (ctx->exception != Qnil) {
|
688
699
|
cb_gc_unprotect(bucket, ctx->exception);
|
@@ -693,7 +704,7 @@ get_callback(libcouchbase_t handle, const void *cookie,
|
|
693
704
|
cb_gc_protect(bucket, ctx->exception);
|
694
705
|
}
|
695
706
|
} else if (flags_get_format(flags) == sym_plain) {
|
696
|
-
v =
|
707
|
+
v = STR_NEW_CSTR("");
|
697
708
|
}
|
698
709
|
if (bucket->async) { /* asynchronous */
|
699
710
|
if (ctx->proc != Qnil) {
|
@@ -731,7 +742,7 @@ flush_callback(libcouchbase_t handle, const void* cookie,
|
|
731
742
|
bucket_t *bucket = ctx->bucket;
|
732
743
|
VALUE node, success = Qtrue, *rv = ctx->rv, exc, res;
|
733
744
|
|
734
|
-
node = authority ?
|
745
|
+
node = authority ? STR_NEW_CSTR(authority) : Qnil;
|
735
746
|
exc = cb_check_error(error, "failed to flush bucket", node);
|
736
747
|
if (exc != Qnil) {
|
737
748
|
rb_ivar_set(exc, id_iv_operation, sym_flush);
|
@@ -777,7 +788,7 @@ version_callback(libcouchbase_t handle, const void *cookie,
|
|
777
788
|
bucket_t *bucket = ctx->bucket;
|
778
789
|
VALUE node, v, *rv = ctx->rv, exc, res;
|
779
790
|
|
780
|
-
node = authority ?
|
791
|
+
node = authority ? STR_NEW_CSTR(authority) : Qnil;
|
781
792
|
exc = cb_check_error(error, "failed to get version", node);
|
782
793
|
if (exc != Qnil) {
|
783
794
|
rb_ivar_set(exc, id_iv_operation, sym_flush);
|
@@ -788,7 +799,7 @@ version_callback(libcouchbase_t handle, const void *cookie,
|
|
788
799
|
}
|
789
800
|
|
790
801
|
if (authority) {
|
791
|
-
v =
|
802
|
+
v = STR_NEW((const char*)bytes, nbytes);
|
792
803
|
if (bucket->async) { /* asynchronous */
|
793
804
|
if (ctx->proc != Qnil) {
|
794
805
|
res = rb_class_new_instance(0, NULL, cResult);
|
@@ -824,7 +835,7 @@ stat_callback(libcouchbase_t handle, const void* cookie,
|
|
824
835
|
bucket_t *bucket = ctx->bucket;
|
825
836
|
VALUE stats, node, k, v, *rv = ctx->rv, exc = Qnil, res;
|
826
837
|
|
827
|
-
node = authority ?
|
838
|
+
node = authority ? STR_NEW_CSTR(authority) : Qnil;
|
828
839
|
exc = cb_check_error(error, "failed to fetch stats", node);
|
829
840
|
if (exc != Qnil) {
|
830
841
|
rb_ivar_set(exc, id_iv_operation, sym_stats);
|
@@ -834,8 +845,8 @@ stat_callback(libcouchbase_t handle, const void* cookie,
|
|
834
845
|
}
|
835
846
|
}
|
836
847
|
if (authority) {
|
837
|
-
k =
|
838
|
-
v =
|
848
|
+
k = STR_NEW((const char*)key, nkey);
|
849
|
+
v = STR_NEW((const char*)bytes, nbytes);
|
839
850
|
if (bucket->async) { /* asynchronous */
|
840
851
|
if (ctx->proc != Qnil) {
|
841
852
|
res = rb_class_new_instance(0, NULL, cResult);
|
@@ -876,7 +887,7 @@ touch_callback(libcouchbase_t handle, const void *cookie,
|
|
876
887
|
VALUE k, success, *rv = ctx->rv, exc = Qnil, res;
|
877
888
|
|
878
889
|
bucket->seqno--;
|
879
|
-
k =
|
890
|
+
k = STR_NEW((const char*)key, nkey);
|
880
891
|
if (error != LIBCOUCHBASE_KEY_ENOENT || !ctx->quiet) {
|
881
892
|
exc = cb_check_error(error, "failed to touch value", k);
|
882
893
|
if (exc != Qnil) {
|
@@ -922,7 +933,7 @@ arithmetic_callback(libcouchbase_t handle, const void *cookie,
|
|
922
933
|
|
923
934
|
bucket->seqno--;
|
924
935
|
|
925
|
-
k =
|
936
|
+
k = STR_NEW((const char*)key, nkey);
|
926
937
|
c = cas > 0 ? ULL2NUM(cas) : Qnil;
|
927
938
|
o = ctx->arithm > 0 ? sym_increment : sym_decrement;
|
928
939
|
exc = cb_check_error(error, "failed to perform arithmetic operation", k);
|
@@ -1042,7 +1053,7 @@ do_scan_connection_options(bucket_t *bucket, int argc, VALUE *argv)
|
|
1042
1053
|
uri_obj = rb_funcall(mURI, id_parse, 1, uri);
|
1043
1054
|
|
1044
1055
|
arg = rb_funcall(uri_obj, id_scheme, 0);
|
1045
|
-
if (arg == Qnil || rb_str_cmp(arg,
|
1056
|
+
if (arg == Qnil || rb_str_cmp(arg, STR_NEW_CSTR("http"))) {
|
1046
1057
|
rb_raise(rb_eArgError, "invalid URI: invalid scheme");
|
1047
1058
|
}
|
1048
1059
|
|
@@ -1088,6 +1099,14 @@ do_scan_connection_options(bucket_t *bucket, int argc, VALUE *argv)
|
|
1088
1099
|
bucket->bucket = strdup(NIL_P(arg) ? "default" : RSTRING_PTR(arg));
|
1089
1100
|
}
|
1090
1101
|
if (TYPE(opts) == T_HASH) {
|
1102
|
+
arg = rb_hash_aref(opts, sym_node_list);
|
1103
|
+
if (arg != Qnil) {
|
1104
|
+
VALUE tt;
|
1105
|
+
free(bucket->node_list);
|
1106
|
+
Check_Type(arg, T_ARRAY);
|
1107
|
+
tt = rb_ary_join(arg, rb_str_new2(";"));
|
1108
|
+
bucket->node_list = strdup(StringValueCStr(tt));
|
1109
|
+
}
|
1091
1110
|
arg = rb_hash_aref(opts, sym_hostname);
|
1092
1111
|
if (arg != Qnil) {
|
1093
1112
|
if (bucket->hostname) {
|
@@ -1191,7 +1210,7 @@ do_connect(bucket_t *bucket)
|
|
1191
1210
|
if (bucket->io == NULL && err != LIBCOUCHBASE_SUCCESS) {
|
1192
1211
|
rb_exc_raise(cb_check_error(err, "failed to create IO instance", Qnil));
|
1193
1212
|
}
|
1194
|
-
bucket->handle = libcouchbase_create(bucket->authority,
|
1213
|
+
bucket->handle = libcouchbase_create(bucket->node_list ? bucket-> node_list : bucket->authority,
|
1195
1214
|
bucket->username, bucket->password, bucket->bucket, bucket->io);
|
1196
1215
|
if (bucket->handle == NULL) {
|
1197
1216
|
rb_raise(eLibcouchbaseError, "failed to create libcouchbase instance");
|
@@ -1258,6 +1277,10 @@ cb_bucket_alloc(VALUE klass)
|
|
1258
1277
|
* Initialize bucket using options only.
|
1259
1278
|
*
|
1260
1279
|
* @param [Hash] options The options for operation for connection
|
1280
|
+
* @option options [Array] :node_list (nil) the list of nodes to connect
|
1281
|
+
* to. If specified it takes precedence over +:host+ option. The list
|
1282
|
+
* must be array of strings in form of host names or host names with
|
1283
|
+
* ports (in first case port 8091 will be used, see examples).
|
1261
1284
|
* @option options [String] :host ("localhost") the hostname or IP address
|
1262
1285
|
* of the node
|
1263
1286
|
* @option options [Fixnum] :port (8091) the port of the managemenent API
|
@@ -1290,6 +1313,9 @@ cb_bucket_alloc(VALUE klass)
|
|
1290
1313
|
* Couchbase.new('http://localhost:8091/pools/default/buckets/protected',
|
1291
1314
|
* :username => 'protected', :password => 'secret')
|
1292
1315
|
*
|
1316
|
+
* @example Use list of nodes, in case some nodes might be dead
|
1317
|
+
* Couchbase.new(:node_list => ['example.com:8091', 'example.org:8091', 'example.net'])
|
1318
|
+
*
|
1293
1319
|
* @return [Bucket]
|
1294
1320
|
*/
|
1295
1321
|
static VALUE
|
@@ -1310,6 +1336,7 @@ cb_bucket_init(int argc, VALUE *argv, VALUE self)
|
|
1310
1336
|
bucket->on_error_proc = Qnil;
|
1311
1337
|
bucket->timeout = 0;
|
1312
1338
|
bucket->object_space = rb_hash_new();
|
1339
|
+
bucket->node_list = NULL;
|
1313
1340
|
|
1314
1341
|
do_scan_connection_options(bucket, argc, argv);
|
1315
1342
|
do_connect(bucket);
|
@@ -1569,7 +1596,7 @@ cb_bucket_hostname_get(VALUE self)
|
|
1569
1596
|
rb_raise(eNoMemoryError, "failed to allocate memory for Bucket");
|
1570
1597
|
}
|
1571
1598
|
}
|
1572
|
-
return
|
1599
|
+
return STR_NEW_CSTR(bucket->hostname);
|
1573
1600
|
}
|
1574
1601
|
|
1575
1602
|
/* Document-method: port
|
@@ -1602,7 +1629,7 @@ cb_bucket_authority_get(VALUE self)
|
|
1602
1629
|
rb_raise(eNoMemoryError, "failed to allocate memory for Bucket");
|
1603
1630
|
}
|
1604
1631
|
snprintf(bucket->authority, len, "%s:%u", bucket->hostname, bucket->port);
|
1605
|
-
return
|
1632
|
+
return STR_NEW_CSTR(bucket->authority);
|
1606
1633
|
}
|
1607
1634
|
|
1608
1635
|
/* Document-method: bucket
|
@@ -1612,7 +1639,7 @@ cb_bucket_authority_get(VALUE self)
|
|
1612
1639
|
cb_bucket_bucket_get(VALUE self)
|
1613
1640
|
{
|
1614
1641
|
bucket_t *bucket = DATA_PTR(self);
|
1615
|
-
return
|
1642
|
+
return STR_NEW_CSTR(bucket->bucket);
|
1616
1643
|
}
|
1617
1644
|
|
1618
1645
|
/* Document-method: pool
|
@@ -1622,7 +1649,7 @@ cb_bucket_bucket_get(VALUE self)
|
|
1622
1649
|
cb_bucket_pool_get(VALUE self)
|
1623
1650
|
{
|
1624
1651
|
bucket_t *bucket = DATA_PTR(self);
|
1625
|
-
return
|
1652
|
+
return STR_NEW_CSTR(bucket->pool);
|
1626
1653
|
}
|
1627
1654
|
|
1628
1655
|
/* Document-method: username
|
@@ -1633,7 +1660,7 @@ cb_bucket_pool_get(VALUE self)
|
|
1633
1660
|
cb_bucket_username_get(VALUE self)
|
1634
1661
|
{
|
1635
1662
|
bucket_t *bucket = DATA_PTR(self);
|
1636
|
-
return
|
1663
|
+
return STR_NEW_CSTR(bucket->username);
|
1637
1664
|
}
|
1638
1665
|
|
1639
1666
|
/* Document-method: password
|
@@ -1643,7 +1670,7 @@ cb_bucket_username_get(VALUE self)
|
|
1643
1670
|
cb_bucket_password_get(VALUE self)
|
1644
1671
|
{
|
1645
1672
|
bucket_t *bucket = DATA_PTR(self);
|
1646
|
-
return
|
1673
|
+
return STR_NEW_CSTR(bucket->password);
|
1647
1674
|
}
|
1648
1675
|
|
1649
1676
|
/* Document-method: url
|
@@ -3549,6 +3576,7 @@ Init_couchbase_ext(void)
|
|
3549
3576
|
sym_increment = ID2SYM(rb_intern("increment"));
|
3550
3577
|
sym_initial = ID2SYM(rb_intern("initial"));
|
3551
3578
|
sym_marshal = ID2SYM(rb_intern("marshal"));
|
3579
|
+
sym_node_list = ID2SYM(rb_intern("node_list"));
|
3552
3580
|
sym_password = ID2SYM(rb_intern("password"));
|
3553
3581
|
sym_plain = ID2SYM(rb_intern("plain"));
|
3554
3582
|
sym_pool = ID2SYM(rb_intern("pool"));
|
data/lib/couchbase/version.rb
CHANGED
data/tasks/compile.rake
CHANGED
@@ -95,7 +95,7 @@ namespace :ports do
|
|
95
95
|
end
|
96
96
|
|
97
97
|
task :libcouchbase => [:libvbucket] do
|
98
|
-
recipe = MiniPortile.new "libcouchbase", "1.0.
|
98
|
+
recipe = MiniPortile.new "libcouchbase", "1.0.6"
|
99
99
|
recipe.files << "http://packages.couchbase.com/clients/c/#{recipe.name}-#{recipe.version}.tar.gz"
|
100
100
|
recipe.configure_options.push("--disable-debug",
|
101
101
|
"--disable-dependency-tracking",
|
@@ -118,7 +118,7 @@ task :cross => ["lib/couchbase_ext.rb", "ports:libcouchbase"]
|
|
118
118
|
|
119
119
|
desc "Package gem for windows"
|
120
120
|
task "package:windows" => :package do
|
121
|
-
sh("env RUBY_CC_VERSION=1.8.7
|
122
|
-
sh("env RUBY_CC_VERSION=1.9.2
|
123
|
-
sh("env RUBY_CC_VERSION=1.8.7:1.9.2
|
121
|
+
sh("env RUBY_CC_VERSION=1.8.7 RBENV_VERSION=1.8.7-p370 rbenv exec bundle exec rake cross compile")
|
122
|
+
sh("env RUBY_CC_VERSION=1.9.2 RBENV_VERSION=1.9.2-p320 rbenv exec bundle exec rake cross compile")
|
123
|
+
sh("env RUBY_CC_VERSION=1.8.7:1.9.2 RBENV_VERSION=1.9.2-p320 rbenv exec bundle exec rake cross native gem")
|
124
124
|
end
|
data/tasks/test.rake
CHANGED
@@ -19,7 +19,7 @@ require 'rake/testtask'
|
|
19
19
|
require 'rake/clean'
|
20
20
|
|
21
21
|
rule 'test/CouchbaseMock.jar' do |task|
|
22
|
-
jar_path = "0.5-SNAPSHOT/CouchbaseMock-0.5-
|
22
|
+
jar_path = "0.5-SNAPSHOT/CouchbaseMock-0.5-20120726.220757-19.jar"
|
23
23
|
sh %{wget -q -O test/CouchbaseMock.jar http://files.couchbase.com/maven2/org/couchbase/mock/CouchbaseMock/#{jar_path}}
|
24
24
|
end
|
25
25
|
|
metadata
CHANGED
@@ -1,151 +1,150 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: couchbase
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 27
|
5
5
|
prerelease:
|
6
|
+
segments:
|
7
|
+
- 1
|
8
|
+
- 1
|
9
|
+
- 4
|
10
|
+
version: 1.1.4
|
6
11
|
platform: ruby
|
7
|
-
authors:
|
12
|
+
authors:
|
8
13
|
- Couchbase
|
9
14
|
autorequire:
|
10
15
|
bindir: bin
|
11
16
|
cert_chain: []
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
none: false
|
18
|
-
requirements:
|
19
|
-
- - ~>
|
20
|
-
- !ruby/object:Gem::Version
|
21
|
-
version: 1.1.0
|
17
|
+
|
18
|
+
date: 2012-08-30 00:00:00 +03:00
|
19
|
+
default_executable:
|
20
|
+
dependencies:
|
21
|
+
- !ruby/object:Gem::Dependency
|
22
22
|
type: :runtime
|
23
|
-
|
24
|
-
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
25
24
|
none: false
|
26
|
-
requirements:
|
25
|
+
requirements:
|
27
26
|
- - ~>
|
28
|
-
- !ruby/object:Gem::Version
|
27
|
+
- !ruby/object:Gem::Version
|
28
|
+
hash: 19
|
29
|
+
segments:
|
30
|
+
- 1
|
31
|
+
- 1
|
32
|
+
- 0
|
29
33
|
version: 1.1.0
|
30
|
-
-
|
31
|
-
|
32
|
-
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
|
-
requirements:
|
35
|
-
- - ~>
|
36
|
-
- !ruby/object:Gem::Version
|
37
|
-
version: 0.8.7
|
38
|
-
type: :development
|
34
|
+
name: yajl-ruby
|
35
|
+
version_requirements: *id001
|
39
36
|
prerelease: false
|
40
|
-
|
37
|
+
- !ruby/object:Gem::Dependency
|
38
|
+
type: :development
|
39
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
41
40
|
none: false
|
42
|
-
requirements:
|
41
|
+
requirements:
|
43
42
|
- - ~>
|
44
|
-
- !ruby/object:Gem::Version
|
43
|
+
- !ruby/object:Gem::Version
|
44
|
+
hash: 49
|
45
|
+
segments:
|
46
|
+
- 0
|
47
|
+
- 8
|
48
|
+
- 7
|
45
49
|
version: 0.8.7
|
46
|
-
|
47
|
-
|
48
|
-
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
|
-
requirements:
|
51
|
-
- - ! '>='
|
52
|
-
- !ruby/object:Gem::Version
|
53
|
-
version: '0'
|
54
|
-
type: :development
|
50
|
+
name: rake
|
51
|
+
version_requirements: *id002
|
55
52
|
prerelease: false
|
56
|
-
|
57
|
-
none: false
|
58
|
-
requirements:
|
59
|
-
- - ! '>='
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
version: '0'
|
62
|
-
- !ruby/object:Gem::Dependency
|
63
|
-
name: rake-compiler
|
64
|
-
requirement: !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
|
-
requirements:
|
67
|
-
- - ! '>='
|
68
|
-
- !ruby/object:Gem::Version
|
69
|
-
version: 0.7.5
|
53
|
+
- !ruby/object:Gem::Dependency
|
70
54
|
type: :development
|
55
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
56
|
+
none: false
|
57
|
+
requirements:
|
58
|
+
- - ">="
|
59
|
+
- !ruby/object:Gem::Version
|
60
|
+
hash: 3
|
61
|
+
segments:
|
62
|
+
- 0
|
63
|
+
version: "0"
|
64
|
+
name: minitest
|
65
|
+
version_requirements: *id003
|
71
66
|
prerelease: false
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
67
|
+
- !ruby/object:Gem::Dependency
|
68
|
+
type: :development
|
69
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
70
|
+
none: false
|
71
|
+
requirements:
|
72
|
+
- - ">="
|
73
|
+
- !ruby/object:Gem::Version
|
74
|
+
hash: 9
|
75
|
+
segments:
|
76
|
+
- 0
|
77
|
+
- 7
|
78
|
+
- 5
|
77
79
|
version: 0.7.5
|
78
|
-
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
requirements:
|
83
|
-
- - ! '>='
|
84
|
-
- !ruby/object:Gem::Version
|
85
|
-
version: '0'
|
80
|
+
name: rake-compiler
|
81
|
+
version_requirements: *id004
|
82
|
+
prerelease: false
|
83
|
+
- !ruby/object:Gem::Dependency
|
86
84
|
type: :development
|
85
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
86
|
+
none: false
|
87
|
+
requirements:
|
88
|
+
- - ">="
|
89
|
+
- !ruby/object:Gem::Version
|
90
|
+
hash: 3
|
91
|
+
segments:
|
92
|
+
- 0
|
93
|
+
version: "0"
|
94
|
+
name: rdiscount
|
95
|
+
version_requirements: *id005
|
87
96
|
prerelease: false
|
88
|
-
|
89
|
-
none: false
|
90
|
-
requirements:
|
91
|
-
- - ! '>='
|
92
|
-
- !ruby/object:Gem::Version
|
93
|
-
version: '0'
|
94
|
-
- !ruby/object:Gem::Dependency
|
95
|
-
name: yard
|
96
|
-
requirement: !ruby/object:Gem::Requirement
|
97
|
-
none: false
|
98
|
-
requirements:
|
99
|
-
- - ! '>='
|
100
|
-
- !ruby/object:Gem::Version
|
101
|
-
version: '0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
102
98
|
type: :development
|
99
|
+
requirement: &id006 !ruby/object:Gem::Requirement
|
100
|
+
none: false
|
101
|
+
requirements:
|
102
|
+
- - ">="
|
103
|
+
- !ruby/object:Gem::Version
|
104
|
+
hash: 3
|
105
|
+
segments:
|
106
|
+
- 0
|
107
|
+
version: "0"
|
108
|
+
name: yard
|
109
|
+
version_requirements: *id006
|
103
110
|
prerelease: false
|
104
|
-
|
105
|
-
none: false
|
106
|
-
requirements:
|
107
|
-
- - ! '>='
|
108
|
-
- !ruby/object:Gem::Version
|
109
|
-
version: '0'
|
110
|
-
- !ruby/object:Gem::Dependency
|
111
|
-
name: mini_portile
|
112
|
-
requirement: !ruby/object:Gem::Requirement
|
113
|
-
none: false
|
114
|
-
requirements:
|
115
|
-
- - ! '>='
|
116
|
-
- !ruby/object:Gem::Version
|
117
|
-
version: '0'
|
111
|
+
- !ruby/object:Gem::Dependency
|
118
112
|
type: :development
|
113
|
+
requirement: &id007 !ruby/object:Gem::Requirement
|
114
|
+
none: false
|
115
|
+
requirements:
|
116
|
+
- - ">="
|
117
|
+
- !ruby/object:Gem::Version
|
118
|
+
hash: 3
|
119
|
+
segments:
|
120
|
+
- 0
|
121
|
+
version: "0"
|
122
|
+
name: mini_portile
|
123
|
+
version_requirements: *id007
|
119
124
|
prerelease: false
|
120
|
-
|
121
|
-
none: false
|
122
|
-
requirements:
|
123
|
-
- - ! '>='
|
124
|
-
- !ruby/object:Gem::Version
|
125
|
-
version: '0'
|
126
|
-
- !ruby/object:Gem::Dependency
|
127
|
-
name: debugger
|
128
|
-
requirement: !ruby/object:Gem::Requirement
|
129
|
-
none: false
|
130
|
-
requirements:
|
131
|
-
- - ! '>='
|
132
|
-
- !ruby/object:Gem::Version
|
133
|
-
version: '0'
|
125
|
+
- !ruby/object:Gem::Dependency
|
134
126
|
type: :development
|
127
|
+
requirement: &id008 !ruby/object:Gem::Requirement
|
128
|
+
none: false
|
129
|
+
requirements:
|
130
|
+
- - ">="
|
131
|
+
- !ruby/object:Gem::Version
|
132
|
+
hash: 3
|
133
|
+
segments:
|
134
|
+
- 0
|
135
|
+
version: "0"
|
136
|
+
name: ruby-debug
|
137
|
+
version_requirements: *id008
|
135
138
|
prerelease: false
|
136
|
-
version_requirements: !ruby/object:Gem::Requirement
|
137
|
-
none: false
|
138
|
-
requirements:
|
139
|
-
- - ! '>='
|
140
|
-
- !ruby/object:Gem::Version
|
141
|
-
version: '0'
|
142
139
|
description: The official client library for use with Couchbase Server.
|
143
140
|
email: support@couchbase.com
|
144
141
|
executables: []
|
145
|
-
|
142
|
+
|
143
|
+
extensions:
|
146
144
|
- ext/couchbase_ext/extconf.rb
|
147
145
|
extra_rdoc_files: []
|
148
|
-
|
146
|
+
|
147
|
+
files:
|
149
148
|
- .gitignore
|
150
149
|
- .travis.yml
|
151
150
|
- .yardopts
|
@@ -183,35 +182,39 @@ files:
|
|
183
182
|
- test/test_store.rb
|
184
183
|
- test/test_touch.rb
|
185
184
|
- test/test_version.rb
|
185
|
+
has_rdoc: true
|
186
186
|
homepage: http://couchbase.org
|
187
|
-
licenses:
|
187
|
+
licenses:
|
188
188
|
- ASL-2
|
189
189
|
post_install_message:
|
190
190
|
rdoc_options: []
|
191
|
-
|
191
|
+
|
192
|
+
require_paths:
|
192
193
|
- lib
|
193
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
194
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
194
195
|
none: false
|
195
|
-
requirements:
|
196
|
-
- -
|
197
|
-
- !ruby/object:Gem::Version
|
198
|
-
|
199
|
-
segments:
|
196
|
+
requirements:
|
197
|
+
- - ">="
|
198
|
+
- !ruby/object:Gem::Version
|
199
|
+
hash: 3
|
200
|
+
segments:
|
200
201
|
- 0
|
201
|
-
|
202
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
202
|
+
version: "0"
|
203
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
203
204
|
none: false
|
204
|
-
requirements:
|
205
|
-
- -
|
206
|
-
- !ruby/object:Gem::Version
|
207
|
-
|
208
|
-
segments:
|
205
|
+
requirements:
|
206
|
+
- - ">="
|
207
|
+
- !ruby/object:Gem::Version
|
208
|
+
hash: 3
|
209
|
+
segments:
|
209
210
|
- 0
|
210
|
-
|
211
|
+
version: "0"
|
211
212
|
requirements: []
|
213
|
+
|
212
214
|
rubyforge_project:
|
213
|
-
rubygems_version: 1.
|
215
|
+
rubygems_version: 1.6.2
|
214
216
|
signing_key:
|
215
217
|
specification_version: 3
|
216
218
|
summary: Couchbase ruby driver
|
217
219
|
test_files: []
|
220
|
+
|