couchbase 1.2.0 → 1.2.1

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.
@@ -3,116 +3,129 @@
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.2.1 (2012-12-28)
7
+
8
+ * [major] RCBC-101 Persistence constraints were not passed to mutation
9
+ methods, so they were not applied properly.
10
+
11
+ * [major] RCBC-102 Inconsistent return values in case of storage
12
+ functions with persistence constraints. It always returns a Hash
13
+ in case of multi-set, even if there is only one document is being
14
+ set.
15
+
16
+ * [minor] Improve internal structures of multi-threaded IO plugin to
17
+ protect it from memory leaks when the Fiber object is forgotten.
18
+
6
19
  ## 1.2.0 (2012-12-12)
7
20
 
8
21
  30 files changed, 2079 insertions(+), 662 deletions(-)
9
22
 
10
- * Specialized io plugin for releasing Ruby GVL (thanks to
23
+ * New specialized io plugin for releasing Ruby GVL (thanks to
11
24
  Sokolov Yura aka funny_falcon).
12
25
 
13
- * Ruby 1.9.x uses global lock for ensuring integrity, and blocking
26
+ * Ruby 1.9.x uses a global lock for ensuring integrity, and blocking
14
27
  calls should be called inside rb_thread_blocking_region to allow
15
- other threads to be runned.
28
+ other threads to be run.
16
29
 
17
- * Ruby 1.8.7 have only green threads, so that rb_thread_schedule
30
+ * Ruby 1.8.7 has only green threads, so rb_thread_schedule
18
31
  should be called manually.
19
32
 
20
- * RCBC-42 Catch exceptions from ruby callbacks
33
+ * RCBC-42 Catch exceptions from ruby callbacks.
21
34
 
22
- * RCBC-99 read out the StringIO contents in json gem monkey patch
35
+ * RCBC-99 read out the StringIO contents in json gem monkey patch.
23
36
 
24
- * Use marshal serializer by default for session store
37
+ * Use marshal serializer by default for session store.
25
38
 
26
- * Remove debugger development dependency
39
+ * Remove debugger development dependency.
27
40
 
28
- * Fix memory leaks and performance improvements
41
+ * Fix memory leaks and performance improvements.
29
42
 
30
43
  ## 1.2.0.z.beta5 (2012-11-29)
31
44
 
32
45
  25 files changed, 1419 insertions(+), 1230 deletions(-)
33
46
 
34
- * RCBC-95 Use response body to clarify Couchbase::Error::HTTP
47
+ * RCBC-95 Use response body to clarify Couchbase::Error::HTTP.
35
48
 
36
- * Fix memory leaks: in async mode context wasn't freed
49
+ * Fix memory leaks: in async mode context wasn't freed.
37
50
 
38
- * Allow to setup default initial value for INCR/DECR on per connection
39
- level.
51
+ * Allow caller to setup default initial value for INCR/DECR on per
52
+ connection level.
40
53
 
41
- * Make error message about libcouchbase dependency more verbose
54
+ * Make error message about libcouchbase dependency more verbose.
42
55
 
43
56
  ## 1.2.0.z.beta4 (2012-11-21)
44
57
 
45
58
  27 files changed, 311 insertions(+), 123 deletions(-)
46
59
 
47
- * Increase default connection timeout for Views up to 75 seconds
60
+ * Increase default connection timeout for Views up to 75 seconds.
48
61
 
49
- * RCBC-94 Reset global exception after usage
62
+ * RCBC-94 Reset global exception after usage.
50
63
 
51
64
  * RCBC-89 Do not expose docs embedded in HTTP response. Use binary
52
65
  protocol for it.
53
66
 
54
67
  * Remove all_docs mentions. It isn't recommended to use it because of
55
- performance issues
68
+ performance and support concerns.
56
69
 
57
70
  * Protect against non string values in :plain mode. Will raise error
58
71
  if the value given isn't a string.
59
72
 
60
- * RCBC-90 Update documentation about session store
73
+ * RCBC-90 Update documentation about session store.
61
74
 
62
- * Make rack session store adapter quiet
75
+ * Make rack session store adapter quiet.
63
76
 
64
- * Update to recent libcouchbase API
77
+ * Update to recent libcouchbase API.
65
78
 
66
- * Adjust version check for MultiJson monkeypatch (8098da1)
79
+ * Adjust version check for MultiJson monkeypatch (8098da1).
67
80
 
68
- * Do not hide ValueFormat reason
81
+ * Do not hide ValueFormat reason.
69
82
 
70
83
  ## 1.2.0.z.beta3 (2012-10-16)
71
84
 
72
85
  18 files changed, 241 insertions(+), 57 deletions(-)
73
86
 
74
- * RCBC-52 Implement bucket create/delete operations
87
+ * RCBC-52 Implement bucket create/delete operations.
75
88
 
76
- * Propogate status code for HTTP responses
89
+ * Propogate status code for HTTP responses.
77
90
 
78
- * RCBC-87 Fix build error on macos
91
+ * RCBC-87 Fix build error on macos.
79
92
 
80
- * Use global scope to find Error classes (thanks to @wr0ngway)
93
+ * Use global scope to find Error classes (thanks to @wr0ngway).
81
94
 
82
- * Fix memory leaks
95
+ * Fix memory leaks.
83
96
 
84
- * Update to recent libcouchbase API
97
+ * Update to recent libcouchbase API.
85
98
 
86
99
  ## 1.2.0.z.beta2 (2012-09-21)
87
100
 
88
101
  3 files changed, 6 insertions(+), 2 deletions(-)
89
102
 
90
- * RCBC-82 Not all rubies are fat on MacOS. Fixes build there
103
+ * RCBC-82 Not all rubies are fat on MacOS. Fixes build.
91
104
 
92
105
  ## 1.2.0.z.beta (2012-09-18)
93
106
 
94
107
  2 files changed, 5 insertions(+), 1 deletion(-)
95
108
 
96
- * Fix version ordering by using ".z" prefix before .beta
109
+ * Fix version ordering by using ".z" prefix before .beta.
97
110
 
98
111
  ## 1.2.0.beta (2012-09-18)
99
112
 
100
113
  51 files changed, 9301 insertions(+), 3364 deletions(-)
101
114
 
102
115
  * RCBC-81 Protect against NoMethodError in extconf.rb. Fixes
103
- gem installation
116
+ gem installation.
104
117
 
105
- * RCBC-79 Use RESTful flush
118
+ * RCBC-79 Use RESTful flush.
106
119
 
107
- * Various build fixes
120
+ * Various build fixes.
108
121
 
109
- * Add attribute reader for Error::Base status code
122
+ * Add attribute reader for Error::Base status code.
110
123
 
111
- * CCBC-98 Expose client temporary failure error
124
+ * CCBC-98 Expose client temporary failure error.
112
125
 
113
- * RCBC-28 Implement Bucket#unlock
126
+ * RCBC-28 Implement Bucket#unlock.
114
127
 
115
- * Fix CAS conversion for Bucket#delete method for 32-bit systems
128
+ * Fix CAS conversion for Bucket#delete method for 32-bit systems.
116
129
 
117
130
  ## 1.1.5 (2012-09-17)
118
131
 
@@ -124,10 +137,10 @@ bugfixes. Do not forget to update this doc in every important patch.
124
137
 
125
138
  5 files changed, 64 insertions(+), 30 deletions(-)
126
139
 
127
- * RCBC-37 Allow to pass intial list of nodes which will allow to
128
- iterate addresses until alive node will be found.
140
+ * RCBC-37 Allow app to pass intial list of nodes which will let client
141
+ iterate addresses until an alive node is found.
129
142
 
130
- Couchbase.connect(:node_list => ['example.com:8091', 'example.org:8091', 'example.net'])
143
+ Couchbase.connect(:node_list => ['node1.example.com:8091', 'node2.example.org:8091', 'node3.example.com:8091'])
131
144
 
132
145
  * RCBC-70 Fixed UTF-8 in the keys. Original discussion
133
146
  https://groups.google.com/d/topic/couchbase/bya0lSf9uGE/discussion
@@ -139,23 +152,23 @@ bugfixes. Do not forget to update this doc in every important patch.
139
152
  * RCBC-47 Allow to skip username for protected buckets. The will use
140
153
  bucket name for credentials.
141
154
 
142
- * Expose number of replicas to the user
155
+ * Expose the number of replicas to the user.
143
156
 
144
- * RCBC-6 Implement OBSERVE command
157
+ * RCBC-6 Implement OBSERVE command.
145
158
 
146
- * RCBC-49 :observe option for storage functions
159
+ * RCBC-49 :observe option for storage functions.
147
160
 
148
- * RCBC-50 Allow to read keys from replica
161
+ * RCBC-50 Allow to read keys from replica.
149
162
 
150
- * RCBC-57 Expose timers API from libcouchbase
163
+ * RCBC-57 Expose timers API from libcouchbase.
151
164
 
152
- * RCBC-59 Replicate flags in Bucket#cas operation
165
+ * RCBC-59 Replicate flags in Bucket#cas operation.
153
166
 
154
167
  * Apply timeout value before connection. Currently libcouchbase shares
155
168
  timeouts for connection and IO operations. This patch allows to
156
- setup timeout on the instantiating the connection.
169
+ setup a timeout when instantiating the connection.
157
170
 
158
- * RCBC-39 Allow to specify delta for incr/decr in options
171
+ * RCBC-39 Allow to specify delta for incr/decr in options.
159
172
 
160
173
  * RCBC-40 Fix Bucket#cas operation behaviour in async mode. The
161
174
  callback of the Bucket#cas method is triggered only once, when it
@@ -179,9 +192,9 @@ bugfixes. Do not forget to update this doc in every important patch.
179
192
  end
180
193
  c.get("foo") #=> {"bar" => 1, "baz" => 2}
181
194
 
182
- * RCBC-43 More docs and examples on views
195
+ * RCBC-43 More docs and examples on views.
183
196
 
184
- * RCBC-37 Bootstrapping using multiple nodes
197
+ * RCBC-37 Bootstrapping using multiple nodes.
185
198
 
186
199
  Couchbase.connect(:node_list => ['example.com:8091', 'example.org:8091', 'example.net'])
187
200
 
@@ -191,7 +204,7 @@ bugfixes. Do not forget to update this doc in every important patch.
191
204
 
192
205
  12 files changed, 939 insertions(+), 20 deletions(-)
193
206
 
194
- * Integrate with Rack and Rails session store
207
+ * Integrate with Rack and Rails session store.
195
208
 
196
209
  # rack
197
210
  require 'rack/session/couchbase'
@@ -201,7 +214,7 @@ bugfixes. Do not forget to update this doc in every important patch.
201
214
  require 'action_dispatch/middleware/session/couchbase_store'
202
215
  AppName::Application.config.session_store :couchbase_store
203
216
 
204
- * Implement cache store adapter for Rails
217
+ * Implement cache store adapter for Rails.
205
218
 
206
219
  cache_options = {
207
220
  :bucket => 'protected',
@@ -211,11 +224,11 @@ bugfixes. Do not forget to update this doc in every important patch.
211
224
  }
212
225
  config.cache_store = :couchbase_store, cache_options
213
226
 
214
- * Implement key prefix (simple namespacing)
227
+ * Implement key prefix (simple namespacing).
215
228
 
216
229
  Couchbase.connect(:key_prefix => "prefix:")
217
230
 
218
- * Allow to force assembling result Hash for multi-get
231
+ * Allow to force assembling result Hash for multi-get.
219
232
 
220
233
  connection.get("foo", "bar")
221
234
  #=> [1, 2]
@@ -226,7 +239,7 @@ bugfixes. Do not forget to update this doc in every important patch.
226
239
 
227
240
  4 files changed, 34 insertions(+), 19 deletions(-)
228
241
 
229
- * Update replace documentation: it accepts :cas option
242
+ * Update replace documentation: it accepts :cas option.
230
243
 
231
244
  * RCBC-36 Fix segfault. Ocassional segfault when accessing the
232
245
  results of a View. https://gist.github.com/2883925
@@ -235,10 +248,10 @@ bugfixes. Do not forget to update this doc in every important patch.
235
248
 
236
249
  4 files changed, 22 insertions(+), 4 deletions(-)
237
250
 
238
- * Fix for multi_json < 1.3.3
251
+ * Fix for multi_json < 1.3.3.
239
252
 
240
253
  * Break out from event loop for non-chunked responses (fix creating
241
- design create)
254
+ design create).
242
255
 
243
256
  ## 1.2.0.dp2 (2012-06-06)
244
257
 
@@ -254,11 +267,11 @@ bugfixes. Do not forget to update this doc in every important patch.
254
267
  get("foo") #=> "bar"
255
268
  get(["x"], :extended => true) #=> {"x"=>["xval", 0, 18336939621176836096]}
256
269
 
257
- * Use monotonic high resolution clock
270
+ * Use monotonic high resolution clock.
258
271
 
259
- * Implement threshold for outgoing commands
272
+ * Implement threshold for outgoing commands.
260
273
 
261
- * Allow to stop event loop from ruby
274
+ * Allow event loop to be stopped from ruby.
262
275
 
263
276
  * RCBC-35 Fix the View parameters escaping. More info at
264
277
  https://gist.github.com/2775050
@@ -268,17 +281,17 @@ bugfixes. Do not forget to update this doc in every important patch.
268
281
  various gems. The most compatible way to use yajl is to call
269
282
  Yajl::Parser and Yajl::Encoder directly.
270
283
 
271
- * Allow to block and wait for part of the requests
284
+ * Allow block and wait for part of the request.
272
285
 
273
- * Fix view iterator. It doesn't lock event loop anymore
286
+ * Fix view iterator to not lock the event loop anymore.
274
287
 
275
- * Define views only if "views" key presented
288
+ * Define views only if "views" key presented.
276
289
 
277
- * Require yajl as development dependency
290
+ * Require yajl as development dependency.
278
291
 
279
- * Implement get with lock operation
292
+ * Implement get with lock operation.
280
293
 
281
- * Update documentation
294
+ * Update documentation.
282
295
 
283
296
  ## 1.1.3 (2012-07-27)
284
297
 
@@ -411,28 +424,28 @@ bugfixes. Do not forget to update this doc in every important patch.
411
424
  * marshal
412
425
  * plain
413
426
 
414
- * Removed Views support
427
+ * Removed Views support.
415
428
 
416
429
  * Added benchmarks, couchbase vs. memcached vs. dalli
417
430
 
418
- * Implement asynchronous protocol
431
+ * Implement asynchronous protocol.
419
432
 
420
- * e36c2e7 Implement basic commands
433
+ * e36c2e7 Implement basic commands.
421
434
 
422
435
  ## 0.9.8 (2011-12-16)
423
436
 
424
437
  3 files changed, 8 insertions(+), 3 deletions(-)
425
438
 
426
439
  * RCBC-10 Always specify credentials for non-default buckets. It was
427
- impossible to store data in non-default buckets
440
+ impossible to store data in non-default buckets.
428
441
 
429
442
  ## 0.9.7 (2011-10-05)
430
443
 
431
444
  7 files changed, 31 insertions(+), 19 deletions(-)
432
445
 
433
- * Fix design doc removing
446
+ * Fix design doc removal.
434
447
 
435
- * Fix 'set' method signature: add missing options argument
448
+ * Fix 'set' method signature: add missing options argument.
436
449
 
437
450
  * Rename gem to 'couchbase' for easy of use. The github project still
438
451
  is 'couchbase-ruby-client'
@@ -455,29 +468,29 @@ bugfixes. Do not forget to update this doc in every important patch.
455
468
 
456
469
  4 files changed, 59 insertions(+), 28 deletions(-)
457
470
 
458
- * Update README. Make it more human-friendly
471
+ * Update README. Make it more human-friendly.
459
472
 
460
- * Removed depency on will_paginate in development mode
473
+ * Removed depency on will_paginate in development mode.
461
474
 
462
475
  ## 0.9.4 (2011-08-01)
463
476
 
464
477
  24 files changed, 1240 insertions(+), 78 deletions(-)
465
478
 
466
- * Use streaming json parser to iterate over view results
479
+ * Use streaming json parser to iterate over view results.
467
480
 
468
- * Update memcached gem dependency to v1.3
481
+ * Update memcached gem dependency to v1.3.
469
482
 
470
- * Proxy TOUCH command to memcached client
483
+ * Proxy TOUCH command to memcached client.
471
484
 
472
- * Fix minor bugs in RestClient and Document classes
485
+ * Fix minor bugs in RestClient and Document classes.
473
486
 
474
487
  * Disable CouchDB API for nodes without 'couchApiBase' key provided.
475
488
 
476
- * Fix bug with unicode parsing in config listener
489
+ * Fix bug with unicode parsing in config listener.
477
490
 
478
491
  * 61f394e RCBC-5 Add Dave's test case: ensure memcached client
479
492
  initialized. Fixes Timeout error on connecting to membase with
480
- Couchbase.new on Ruby 1.8.7
493
+ Couchbase.new on Ruby 1.8.7.
481
494
 
482
495
  ## 0.9.3 (2011-07-29)
483
496
 
@@ -486,23 +499,23 @@ bugfixes. Do not forget to update this doc in every important patch.
486
499
  * Use Latch (via Mutex and ConditionVariable) to wait until initial
487
500
  setup will be finished.
488
501
 
489
- * Update prefix for development views (from '$dev_' to 'dev_')
502
+ * Update prefix for development views (from '$dev_' to 'dev_').
490
503
 
491
504
  ## 0.9.2 (2011-07-28)
492
505
 
493
506
  5 files changed, 31 insertions(+), 20 deletions(-)
494
507
 
495
- * Use zero TTL by default to store records forever
508
+ * Use zero TTL by default to store records forever.
496
509
 
497
- * Update documentation
510
+ * Update documentation.
498
511
 
499
- * Wait until configuration is done
512
+ * Wait until configuration is done.
500
513
 
501
514
  ## 0.9.1 (2011-07-25)
502
515
 
503
516
  3 files changed, 5 insertions(+), 2 deletions(-)
504
517
 
505
- * Minor bugfix for RestClient initialization
518
+ * Minor bugfix for RestClient initialization.
506
519
 
507
520
  ## 0.9.0 (2011-07-25)
508
521
 
@@ -690,6 +690,22 @@ typedef struct loop_select_arg {
690
690
  rb_fdset_t in, out;
691
691
  } ls_arg;
692
692
 
693
+ static void
694
+ ls_arg_free(void *p) {
695
+ ls_arg *args = p;
696
+ if (args) {
697
+ rb_fd_term(&args->in);
698
+ rb_fd_term(&args->out);
699
+ xfree(args);
700
+ }
701
+ }
702
+
703
+ static VALUE
704
+ ls_arg_alloc(ls_arg **args)
705
+ {
706
+ return Data_Make_Struct(rb_cObject, ls_arg, 0, ls_arg_free, *args);
707
+ }
708
+
693
709
  static VALUE
694
710
  loop_run_select(VALUE argp)
695
711
  {
@@ -776,10 +792,12 @@ loop_run_select(VALUE argp)
776
792
  static VALUE
777
793
  loop_select_cleanup(VALUE argp)
778
794
  {
779
- ls_arg *args = (ls_arg*) argp;
780
- rb_fd_term(&args->in);
781
- rb_fd_term(&args->out);
782
- callbacks_clean(&args->loop->callbacks);
795
+ ls_arg *args = DATA_PTR(argp);
796
+ if (args) {
797
+ callbacks_clean(&args->loop->callbacks);
798
+ ls_arg_free(args);
799
+ DATA_PTR(argp) = 0;
800
+ }
783
801
  return Qnil;
784
802
  }
785
803
  /* loop select implementaion end */
@@ -841,6 +859,24 @@ struct poll_args {
841
859
  int lerrno;
842
860
  };
843
861
 
862
+ static void
863
+ lp_arg_free(void *p)
864
+ {
865
+ lp_arg *args = p;
866
+ if (args) {
867
+ if (args->fds) {
868
+ free(args->fds);
869
+ }
870
+ xfree(args);
871
+ }
872
+ }
873
+
874
+ static VALUE
875
+ lp_arg_alloc(lp_arg **args)
876
+ {
877
+ return Data_Make_Struct(rb_cObject, lp_arg, 0, lp_arg_free, *args);
878
+ }
879
+
844
880
  #ifdef HAVE_RB_THREAD_BLOCKING_REGION
845
881
  static VALUE
846
882
  loop_blocking_poll(void *argp)
@@ -855,7 +891,7 @@ loop_blocking_poll(void *argp)
855
891
  static VALUE
856
892
  loop_run_poll(VALUE argp)
857
893
  {
858
- lp_arg *args = (struct poll_args *)argp;
894
+ lp_arg *args = (lp_arg*)argp;
859
895
  rb_mt_loop *loop = args->loop;
860
896
  struct timespec ts;
861
897
  hrtime_t now, next_time;
@@ -984,11 +1020,12 @@ retry:
984
1020
  static VALUE
985
1021
  loop_poll_cleanup(VALUE argp)
986
1022
  {
987
- lp_arg *args = (struct poll_args *)argp;
988
- if (args->fds) {
989
- free(args->fds);
1023
+ lp_arg *args = DATA_PTR(argp);
1024
+ if (args) {
1025
+ callbacks_clean(&args->loop->callbacks);
1026
+ lp_arg_free(args);
1027
+ DATA_PTR(argp) = 0;
990
1028
  }
991
- callbacks_clean(&args->loop->callbacks);
992
1029
  return Qnil;
993
1030
  }
994
1031
  #endif
@@ -1006,17 +1043,17 @@ loop_run(rb_mt_loop *loop)
1006
1043
  lcb_socket_t max = events_max_fd(&loop->events);
1007
1044
  int use_poll = max >= 128;
1008
1045
  if (use_poll) {
1009
- lp_arg args;
1010
- memset(&args, 0, sizeof(args));
1011
- args.loop = loop;
1012
- rb_ensure(loop_run_poll, (VALUE)&args, loop_poll_cleanup, (VALUE)&args);
1046
+ lp_arg *args;
1047
+ VALUE argp = lp_arg_alloc(&args);
1048
+ args->loop = loop;
1049
+ rb_ensure(loop_run_poll, (VALUE)args, loop_poll_cleanup, argp);
1013
1050
  } else
1014
1051
  #endif
1015
1052
  {
1016
- ls_arg args;
1017
- memset(&args, 0, sizeof(args));
1018
- args.loop = loop;
1019
- rb_ensure(loop_run_select, (VALUE)&args, loop_select_cleanup, (VALUE)&args);
1053
+ ls_arg *args;
1054
+ VALUE argp = ls_arg_alloc(&args);
1055
+ args->loop = loop;
1056
+ rb_ensure(loop_run_select, (VALUE)args, loop_select_cleanup, argp);
1020
1057
  }
1021
1058
  }
1022
1059
  }
@@ -142,6 +142,7 @@ cb_bucket_store(lcb_storage_t cmd, int argc, VALUE *argv, VALUE self)
142
142
  ctx->proc = cb_gc_protect(bucket, proc);
143
143
  ctx->observe_options = cb_gc_protect(bucket, obs);
144
144
  ctx->exception = Qnil;
145
+ obs = params.cmd.store.observe;
145
146
  ctx->nqueries = params.cmd.store.num;
146
147
  err = lcb_store(bucket->handle, (const void *)ctx,
147
148
  params.cmd.store.num, params.cmd.store.ptr);
@@ -173,7 +174,7 @@ cb_bucket_store(lcb_storage_t cmd, int argc, VALUE *argv, VALUE self)
173
174
  }
174
175
  if (RTEST(obs)) {
175
176
  cb_gc_unprotect(bucket, obs);
176
- return rb_funcall(bucket->self, cb_id_observe_and_wait, 2, rv, obs);
177
+ rv = rb_funcall(bucket->self, cb_id_observe_and_wait, 2, rv, obs);
177
178
  }
178
179
  if (params.cmd.store.num > 1) {
179
180
  return rv; /* return as a hash {key => cas, ...} */
@@ -17,5 +17,5 @@
17
17
 
18
18
  # Couchbase ruby client
19
19
  module Couchbase
20
- VERSION = "1.2.0"
20
+ VERSION = "1.2.1"
21
21
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: couchbase
3
3
  version: !ruby/object:Gem::Version
4
- hash: 31
4
+ hash: 29
5
5
  prerelease:
6
6
  segments:
7
7
  - 1
8
8
  - 2
9
- - 0
10
- version: 1.2.0
9
+ - 1
10
+ version: 1.2.1
11
11
  platform: ruby
12
12
  authors:
13
13
  - Couchbase
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2012-12-12 00:00:00 +03:00
18
+ date: 2012-12-28 00:00:00 +03:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency