libcouchbase 1.2.2 → 1.2.3

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,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d2b2adec3e51e4e60b6c916abc6ec9b3ab4fabe8
4
- data.tar.gz: 2ab400fc7fa882756081614ca99db819e7c04534
3
+ metadata.gz: 994ce5bef19d9b756a99b100151c0186c1196b1c
4
+ data.tar.gz: '04980977530cfe5f4c94f8eeb38c03546bcba541'
5
5
  SHA512:
6
- metadata.gz: 01eedef8aeeedebdcd998a40542023d7fe50e0121f5848ca4635b38af977ff8f512e2f002fb092216787b831bc80c834dd15ed743b777c9ea2bfd4904a604eeb
7
- data.tar.gz: 310f7f69fb77f03b50c9f6f626a9b76cf9ce9913e69471d9a4629e06eedd53af2b548e04740dc2ac1ce398371a077fd7a3eadf148e65539e2d97f30174c6a708
6
+ metadata.gz: 5f3bd4838cdb3fcbca7825fb0b0bade82b4054c72526ab82720adb1d5e536b0e0367bd65d55f012f52cd223c08d6e67a113616d4c8280d99169656362a204b25
7
+ data.tar.gz: 50a3ed477e3fa3e7faa06081343ab5a570e738e53d6f071a54629defa764f2a3a6aa40be9444c2e38e77470b9284a3aad40de1082e7338fa170ae441d4adb88f
data/README.md CHANGED
@@ -9,6 +9,19 @@ An alternative to the official [couchbase-client](https://github.com/couchbase/c
9
9
 
10
10
  This is a low level wrapper around libcouchbase. For a more friendly ActiveModel interface see [couchbase-orm](https://github.com/acaprojects/couchbase-orm)
11
11
 
12
+ ## Couchbase 5 Changes
13
+
14
+ The Couchbase 5 Admin Console blows away flags on documents if you edit them in the interface.
15
+ Flags were being used to store document formats, however these were mainly implemented for compatibility with the defunct official client.
16
+
17
+
18
+ To prevent this being an issue we've made the following changes from version 1.2 of this library:
19
+
20
+ 1. All writes will result in valid JSON being saved to the database
21
+ * No more `raw strings` they will be saved as `"raw strings"`
22
+ * Existing raw strings will still be read correctly
23
+ 2. Since there are no more raw strings, append / prepend are no longer needed (not that we ever used them)
24
+
12
25
 
13
26
  ## Runtime Support:
14
27
 
@@ -97,22 +110,6 @@ bucket.get("missing-key") #=> raise Libcouchbase::Error::KeyN
97
110
  bucket.get("missing-key", :quiet => true) #=> nil
98
111
  ```
99
112
 
100
- The library supports three different formats for representing values:
101
-
102
- * `:document` (default) format supports most of ruby types which could
103
- be mapped to JSON data (hashes, arrays, string, numbers).
104
-
105
- * `:plain` This format avoids any conversions to be applied to your
106
- data, but your data should be passed as String. This is useful for
107
- building custom algorithms or formats.
108
-
109
- * `:marshal` Use this format if you'd like to transparently serialize your
110
- ruby object with standard `Marshal.dump` and `Marshal.load` methods
111
-
112
- ```ruby
113
- bucket.put(:some_object, my_object, format: :marshal)
114
- ```
115
-
116
113
 
117
114
  The library supports both synchronous and asynchronous operations.
118
115
  In asynchronous mode all operations will return control to caller
@@ -125,8 +122,8 @@ to execute in parallel.
125
122
  ```ruby
126
123
  # Perform operations in Async and then wait for the results
127
124
  results = []
128
- results << bucket.get(:key1)
129
- results << bucket.get(:key2)
125
+ results << bucket.get(:key1, async: true)
126
+ results << bucket.get(:key2, async: true)
130
127
  bucket.wait_results(results) #=> ['key1_val', 'key2_val']
131
128
 
132
129
  # Is equivalent to:
@@ -153,7 +150,7 @@ result = bucket.get("foo", extended: true)
153
150
  result.key #=> "foo"
154
151
  result.value #=> {some: "value"}
155
152
  result.cas #=> 123445
156
- result.metadata #=> {format: :document, flags: 0}
153
+ result.metadata #=> {flags: 0}
157
154
  ```
158
155
 
159
156
 
@@ -195,7 +192,7 @@ options as set command above.
195
192
 
196
193
  ```ruby
197
194
  bucket.add("foo", "bar")
198
- bucket.add("foo", "bar", ttl: 30, format: :plain)
195
+ bucket.add("foo", "bar", ttl: 30)
199
196
  ```
200
197
 
201
198
 
@@ -209,20 +206,6 @@ bucket.replace("foo", "bar")
209
206
  ```
210
207
 
211
208
 
212
- ### Prepend/Append
213
-
214
- These commands are meaningful when you are using the `:plain` value format,
215
- because the concatenation is performed by server which has no idea how
216
- to merge to JSON values or values in ruby Marshal format.
217
-
218
- ```ruby
219
- bucket.set(:foo, "world", format: :plain)
220
- bucket.append(:foo, "!")
221
- bucket.prepend(:foo, "Hello, ")
222
- bucket.get(:foo) #=> "Hello, world!"
223
- ```
224
-
225
-
226
209
  ### Increment/Decrement
227
210
 
228
211
  These commands increment the value assigned to the key.
@@ -401,19 +384,21 @@ To execute view you need to fetch it from design document `_design/blog`:
401
384
  If N1QL indexes have been created, then you can query them
402
385
 
403
386
  ```ruby
404
- n1ql = bucket.n1ql
405
- n1ql.select('*').from(:default).where('port == 10001')
406
- res = n1ql.results
387
+ results = bucket.n1ql
388
+ .select('*')
389
+ .from(:default)
390
+ .where('port == 10001')
391
+ .results
407
392
 
408
393
  # Results are lazily loaded by the enumerator
409
- # Results are stored for re-use until `res` goes out of scope
394
+ # Results are stored for re-use until `results` goes out of scope
410
395
  # Actual database query happens here
411
- res.each do |row|
396
+ results.each do |row|
412
397
  # Each row is a Hash of the data requested
413
398
  end
414
399
 
415
400
  # You can however stream results to save memory and the results are not saved
416
- res.stream do |row|
401
+ results.stream do |row|
417
402
  # Row is cleaned up as soon as possible
418
403
  end
419
404
  ```
@@ -424,17 +409,17 @@ end
424
409
  If Full Text Search indexes have been created, then you can query them
425
410
 
426
411
  ```ruby
427
- res = bucket.full_text_search(:index_name, 'query')
412
+ results = bucket.full_text_search(:index_name, 'query')
428
413
 
429
414
  # Results are lazily loaded by the enumerator
430
415
  # Results are stored for re-use until `res` goes out of scope
431
416
  # Actual database query happens here
432
- res.each do |row|
417
+ results.each do |row|
433
418
  # Each row is a Hash of the data requested
434
419
  end
435
420
 
436
421
  # You can however stream results to save memory and the results are not saved
437
- res.stream do |row|
422
+ results.stream do |row|
438
423
  # Row is cleaned up as soon as possible
439
424
  end
440
425
  ```
@@ -780,11 +780,7 @@ module Libcouchbase
780
780
  headers[key] = value
781
781
  end
782
782
  end
783
- body = if resp[:nbody] > 0
784
- resp[:body].read_string(resp[:nbody])
785
- else
786
- ''
787
- end
783
+ body = body_text(resp)
788
784
 
789
785
  if (200...300).include? resp[:htstatus]
790
786
  HttpResponse.new(cb, resp[:htstatus], headers, body, req.value)
@@ -835,7 +831,7 @@ module Libcouchbase
835
831
  error_klass = Error.lookup(row_data[:rc])
836
832
  if error_klass == Error::HttpError
837
833
  http_resp = row_data[:htresp]
838
- view.error error_klass.new(http_resp[:body].read_string(http_resp[:nbody]))
834
+ view.error error_klass.new(body_text(http_resp))
839
835
  else
840
836
  view.error error_klass.new
841
837
  end
@@ -871,11 +867,20 @@ module Libcouchbase
871
867
  error_klass = Error.lookup(row_data[:rc])
872
868
  if error_klass == Error::HttpError
873
869
  http_resp = row_data[:htresp]
874
- view.error error_klass.new(http_resp[:body].read_string(http_resp[:nbody]))
870
+ view.error error_klass.new(body_text(http_resp))
875
871
  else
876
872
  view.error error_klass.new
877
873
  end
878
874
  end
879
875
  end
876
+
877
+ # Extracts the body content of a HTTP response
878
+ def body_text(http_resp)
879
+ if http_resp[:nbody] > 0
880
+ http_resp[:body].read_string(http_resp[:nbody])
881
+ else
882
+ ''
883
+ end
884
+ end
880
885
  end
881
886
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true, encoding: ASCII-8BIT
2
2
 
3
3
  module Libcouchbase
4
- VERSION = '1.2.2'
4
+ VERSION = '1.2.3'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: libcouchbase
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.2
4
+ version: 1.2.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stephen von Takach
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-10-31 00:00:00.000000000 Z
11
+ date: 2017-11-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ffi