couchbase 1.1.3 → 1.1.4

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.
@@ -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, rb_str_new2(" ")); \
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, rb_str_new2(" ")); \
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 rb_str_new2(rb_id2name(SYM2ID(key)));
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 = rb_str_new((const char*)key, nkey);
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 = rb_str_new((const char*)key, nkey);
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 = rb_str_new((const char*)key, nkey);
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(rb_str_new((const char*)bytes, nbytes), flags, ctx->force_format);
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 = rb_str_new2("");
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 ? rb_str_new2(authority) : Qnil;
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 ? rb_str_new2(authority) : Qnil;
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 = rb_str_new((const char*)bytes, nbytes);
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 ? rb_str_new2(authority) : Qnil;
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 = rb_str_new((const char*)key, nkey);
838
- v = rb_str_new((const char*)bytes, nbytes);
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 = rb_str_new((const char*)key, nkey);
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 = rb_str_new((const char*)key, nkey);
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, rb_str_new2("http"))) {
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 rb_str_new2(bucket->hostname);
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 rb_str_new2(bucket->authority);
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 rb_str_new2(bucket->bucket);
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 rb_str_new2(bucket->pool);
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 rb_str_new2(bucket->username);
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 rb_str_new2(bucket->password);
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"));
@@ -17,5 +17,5 @@
17
17
 
18
18
  # Couchbase ruby client
19
19
  module Couchbase
20
- VERSION = "1.1.3"
20
+ VERSION = "1.1.4"
21
21
  end
@@ -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.4"
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 rvm 1.8.7 do bundle exec rake cross compile")
122
- sh("env RUBY_CC_VERSION=1.9.2 rvm 1.9.2 do bundle exec rake cross compile")
123
- sh("env RUBY_CC_VERSION=1.8.7:1.9.2 rvm 1.9.2 do bundle exec rake cross native gem")
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
@@ -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-20120222.060643-15.jar"
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
- version: 1.1.3
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
- date: 2012-07-27 00:00:00.000000000 Z
13
- dependencies:
14
- - !ruby/object:Gem::Dependency
15
- name: yajl-ruby
16
- requirement: !ruby/object:Gem::Requirement
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
- prerelease: false
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
- - !ruby/object:Gem::Dependency
31
- name: rake
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
- version_requirements: !ruby/object:Gem::Requirement
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
- - !ruby/object:Gem::Dependency
47
- name: minitest
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
- version_requirements: !ruby/object:Gem::Requirement
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
- version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
- requirements:
75
- - - ! '>='
76
- - !ruby/object:Gem::Version
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
- - !ruby/object:Gem::Dependency
79
- name: rdiscount
80
- requirement: !ruby/object:Gem::Requirement
81
- none: false
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
- version_requirements: !ruby/object:Gem::Requirement
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
- version_requirements: !ruby/object:Gem::Requirement
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
- version_requirements: !ruby/object:Gem::Requirement
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
- extensions:
142
+
143
+ extensions:
146
144
  - ext/couchbase_ext/extconf.rb
147
145
  extra_rdoc_files: []
148
- files:
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
- require_paths:
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
- version: '0'
199
- segments:
196
+ requirements:
197
+ - - ">="
198
+ - !ruby/object:Gem::Version
199
+ hash: 3
200
+ segments:
200
201
  - 0
201
- hash: 4020867822083884443
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
- version: '0'
208
- segments:
205
+ requirements:
206
+ - - ">="
207
+ - !ruby/object:Gem::Version
208
+ hash: 3
209
+ segments:
209
210
  - 0
210
- hash: 4020867822083884443
211
+ version: "0"
211
212
  requirements: []
213
+
212
214
  rubyforge_project:
213
- rubygems_version: 1.8.24
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
+