couchbase 3.0.0.alpha.1 → 3.0.0.alpha.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/tests-6.0.3.yml +49 -0
- data/.github/workflows/tests.yml +47 -0
- data/.gitmodules +3 -0
- data/.idea/dictionaries/gem_terms.xml +5 -0
- data/.idea/inspectionProfiles/Project_Default.xml +1 -0
- data/.idea/vcs.xml +1 -0
- data/Gemfile +1 -0
- data/README.md +55 -2
- data/Rakefile +18 -0
- data/bin/init-cluster +62 -0
- data/bin/setup +1 -0
- data/couchbase.gemspec +3 -2
- data/examples/crud.rb +1 -2
- data/examples/managing_buckets.rb +47 -0
- data/examples/managing_collections.rb +58 -0
- data/examples/managing_query_indexes.rb +63 -0
- data/examples/query.rb +3 -2
- data/examples/query_with_consistency.rb +76 -0
- data/examples/subdocument.rb +23 -1
- data/ext/.clang-format +1 -1
- data/ext/.idea/dictionaries/couchbase_terms.xml +2 -0
- data/ext/.idea/vcs.xml +1 -0
- data/ext/CMakeLists.txt +30 -12
- data/ext/build_version.hxx.in +26 -0
- data/ext/couchbase/bucket.hxx +69 -8
- data/ext/couchbase/cluster.hxx +70 -54
- data/ext/couchbase/collections_manifest.hxx +3 -3
- data/ext/couchbase/configuration.hxx +14 -0
- data/ext/couchbase/couchbase.cxx +2044 -383
- data/ext/couchbase/{operations/document_id.hxx → document_id.hxx} +5 -4
- data/ext/couchbase/io/http_message.hxx +5 -1
- data/ext/couchbase/io/http_parser.hxx +2 -1
- data/ext/couchbase/io/http_session.hxx +6 -3
- data/ext/couchbase/io/{binary_message.hxx → mcbp_message.hxx} +15 -12
- data/ext/couchbase/io/mcbp_parser.hxx +99 -0
- data/ext/couchbase/io/{key_value_session.hxx → mcbp_session.hxx} +200 -95
- data/ext/couchbase/io/session_manager.hxx +37 -22
- data/ext/couchbase/mutation_token.hxx +2 -1
- data/ext/couchbase/operations.hxx +38 -8
- data/ext/couchbase/operations/bucket_create.hxx +138 -0
- data/ext/couchbase/operations/bucket_drop.hxx +65 -0
- data/ext/couchbase/operations/bucket_flush.hxx +65 -0
- data/ext/couchbase/operations/bucket_get.hxx +69 -0
- data/ext/couchbase/operations/bucket_get_all.hxx +62 -0
- data/ext/couchbase/operations/bucket_settings.hxx +111 -0
- data/ext/couchbase/operations/bucket_update.hxx +115 -0
- data/ext/couchbase/operations/cluster_developer_preview_enable.hxx +60 -0
- data/ext/couchbase/operations/collection_create.hxx +86 -0
- data/ext/couchbase/operations/collection_drop.hxx +82 -0
- data/ext/couchbase/operations/command.hxx +10 -10
- data/ext/couchbase/operations/document_decrement.hxx +80 -0
- data/ext/couchbase/operations/document_exists.hxx +80 -0
- data/ext/couchbase/operations/{get.hxx → document_get.hxx} +4 -2
- data/ext/couchbase/operations/document_get_and_lock.hxx +64 -0
- data/ext/couchbase/operations/document_get_and_touch.hxx +64 -0
- data/ext/couchbase/operations/document_increment.hxx +80 -0
- data/ext/couchbase/operations/document_insert.hxx +74 -0
- data/ext/couchbase/operations/{lookup_in.hxx → document_lookup_in.hxx} +2 -2
- data/ext/couchbase/operations/{mutate_in.hxx → document_mutate_in.hxx} +11 -2
- data/ext/couchbase/operations/{query.hxx → document_query.hxx} +101 -6
- data/ext/couchbase/operations/document_remove.hxx +67 -0
- data/ext/couchbase/operations/document_replace.hxx +76 -0
- data/ext/couchbase/operations/{upsert.hxx → document_touch.hxx} +14 -14
- data/ext/couchbase/operations/{remove.hxx → document_unlock.hxx} +12 -10
- data/ext/couchbase/operations/document_upsert.hxx +74 -0
- data/ext/couchbase/operations/query_index_build_deferred.hxx +85 -0
- data/ext/couchbase/operations/query_index_create.hxx +134 -0
- data/ext/couchbase/operations/query_index_drop.hxx +108 -0
- data/ext/couchbase/operations/query_index_get_all.hxx +106 -0
- data/ext/couchbase/operations/scope_create.hxx +81 -0
- data/ext/couchbase/operations/scope_drop.hxx +79 -0
- data/ext/couchbase/operations/scope_get_all.hxx +72 -0
- data/ext/couchbase/protocol/client_opcode.hxx +35 -0
- data/ext/couchbase/protocol/client_request.hxx +56 -9
- data/ext/couchbase/protocol/client_response.hxx +52 -15
- data/ext/couchbase/protocol/cmd_cluster_map_change_notification.hxx +81 -0
- data/ext/couchbase/protocol/cmd_decrement.hxx +187 -0
- data/ext/couchbase/protocol/cmd_exists.hxx +171 -0
- data/ext/couchbase/protocol/cmd_get.hxx +31 -8
- data/ext/couchbase/protocol/cmd_get_and_lock.hxx +142 -0
- data/ext/couchbase/protocol/cmd_get_and_touch.hxx +142 -0
- data/ext/couchbase/protocol/cmd_get_cluster_config.hxx +16 -3
- data/ext/couchbase/protocol/cmd_get_collections_manifest.hxx +16 -3
- data/ext/couchbase/protocol/cmd_get_error_map.hxx +16 -3
- data/ext/couchbase/protocol/cmd_hello.hxx +24 -8
- data/ext/couchbase/protocol/cmd_increment.hxx +187 -0
- data/ext/couchbase/protocol/cmd_info.hxx +1 -0
- data/ext/couchbase/protocol/cmd_insert.hxx +172 -0
- data/ext/couchbase/protocol/cmd_lookup_in.hxx +28 -13
- data/ext/couchbase/protocol/cmd_mutate_in.hxx +65 -13
- data/ext/couchbase/protocol/cmd_remove.hxx +59 -4
- data/ext/couchbase/protocol/cmd_replace.hxx +172 -0
- data/ext/couchbase/protocol/cmd_sasl_auth.hxx +15 -3
- data/ext/couchbase/protocol/cmd_sasl_list_mechs.hxx +15 -3
- data/ext/couchbase/protocol/cmd_sasl_step.hxx +15 -3
- data/ext/couchbase/protocol/cmd_select_bucket.hxx +14 -2
- data/ext/couchbase/protocol/cmd_touch.hxx +102 -0
- data/ext/couchbase/protocol/cmd_unlock.hxx +95 -0
- data/ext/couchbase/protocol/cmd_upsert.hxx +50 -14
- data/ext/couchbase/protocol/durability_level.hxx +67 -0
- data/ext/couchbase/protocol/frame_info_id.hxx +187 -0
- data/ext/couchbase/protocol/hello_feature.hxx +137 -0
- data/ext/couchbase/protocol/server_opcode.hxx +57 -0
- data/ext/couchbase/protocol/server_request.hxx +122 -0
- data/ext/couchbase/protocol/unsigned_leb128.h +15 -15
- data/ext/couchbase/utils/byteswap.hxx +1 -2
- data/ext/couchbase/utils/url_codec.hxx +225 -0
- data/ext/couchbase/version.hxx +3 -1
- data/ext/extconf.rb +4 -1
- data/ext/test/main.cxx +37 -113
- data/ext/third_party/snappy/.appveyor.yml +36 -0
- data/ext/third_party/snappy/.gitignore +8 -0
- data/ext/third_party/snappy/.travis.yml +98 -0
- data/ext/third_party/snappy/AUTHORS +1 -0
- data/ext/third_party/snappy/CMakeLists.txt +345 -0
- data/ext/third_party/snappy/CONTRIBUTING.md +26 -0
- data/ext/third_party/snappy/COPYING +54 -0
- data/ext/third_party/snappy/NEWS +188 -0
- data/ext/third_party/snappy/README.md +148 -0
- data/ext/third_party/snappy/cmake/SnappyConfig.cmake.in +33 -0
- data/ext/third_party/snappy/cmake/config.h.in +59 -0
- data/ext/third_party/snappy/docs/README.md +72 -0
- data/ext/third_party/snappy/format_description.txt +110 -0
- data/ext/third_party/snappy/framing_format.txt +135 -0
- data/ext/third_party/snappy/snappy-c.cc +90 -0
- data/ext/third_party/snappy/snappy-c.h +138 -0
- data/ext/third_party/snappy/snappy-internal.h +315 -0
- data/ext/third_party/snappy/snappy-sinksource.cc +121 -0
- data/ext/third_party/snappy/snappy-sinksource.h +182 -0
- data/ext/third_party/snappy/snappy-stubs-internal.cc +42 -0
- data/ext/third_party/snappy/snappy-stubs-internal.h +493 -0
- data/ext/third_party/snappy/snappy-stubs-public.h.in +63 -0
- data/ext/third_party/snappy/snappy-test.cc +613 -0
- data/ext/third_party/snappy/snappy-test.h +526 -0
- data/ext/third_party/snappy/snappy.cc +1770 -0
- data/ext/third_party/snappy/snappy.h +209 -0
- data/ext/third_party/snappy/snappy_compress_fuzzer.cc +60 -0
- data/ext/third_party/snappy/snappy_uncompress_fuzzer.cc +58 -0
- data/ext/third_party/snappy/snappy_unittest.cc +1512 -0
- data/ext/third_party/snappy/testdata/alice29.txt +3609 -0
- data/ext/third_party/snappy/testdata/asyoulik.txt +4122 -0
- data/ext/third_party/snappy/testdata/baddata1.snappy +0 -0
- data/ext/third_party/snappy/testdata/baddata2.snappy +0 -0
- data/ext/third_party/snappy/testdata/baddata3.snappy +0 -0
- data/ext/third_party/snappy/testdata/fireworks.jpeg +0 -0
- data/ext/third_party/snappy/testdata/geo.protodata +0 -0
- data/ext/third_party/snappy/testdata/html +1 -0
- data/ext/third_party/snappy/testdata/html_x_4 +1 -0
- data/ext/third_party/snappy/testdata/kppkn.gtb +0 -0
- data/ext/third_party/snappy/testdata/lcet10.txt +7519 -0
- data/ext/third_party/snappy/testdata/paper-100k.pdf +600 -2
- data/ext/third_party/snappy/testdata/plrabn12.txt +10699 -0
- data/ext/third_party/snappy/testdata/urls.10K +10000 -0
- data/lib/couchbase/binary_collection.rb +33 -76
- data/lib/couchbase/binary_collection_options.rb +94 -0
- data/lib/couchbase/bucket.rb +9 -3
- data/lib/couchbase/cluster.rb +161 -23
- data/lib/couchbase/collection.rb +108 -191
- data/lib/couchbase/collection_options.rb +430 -0
- data/lib/couchbase/errors.rb +136 -134
- data/lib/couchbase/json_transcoder.rb +32 -0
- data/lib/couchbase/management/analytics_index_manager.rb +185 -9
- data/lib/couchbase/management/bucket_manager.rb +84 -33
- data/lib/couchbase/management/collection_manager.rb +166 -1
- data/lib/couchbase/management/query_index_manager.rb +261 -0
- data/lib/couchbase/management/search_index_manager.rb +291 -0
- data/lib/couchbase/management/user_manager.rb +12 -10
- data/lib/couchbase/management/view_index_manager.rb +151 -1
- data/lib/couchbase/mutation_state.rb +11 -1
- data/lib/couchbase/scope.rb +4 -4
- data/lib/couchbase/version.rb +1 -1
- metadata +113 -18
- data/.travis.yml +0 -7
- data/ext/couchbase/io/binary_parser.hxx +0 -64
- data/lib/couchbase/results.rb +0 -307
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cd8c352b8e6f1752e4a465be62889b7d00f89fa6dbb217ceb6a2fbcff601d4c2
|
4
|
+
data.tar.gz: 232734648d18dddac6acbc8f5ea1b3d40cec2efa1ef2e021e568b4491152cfcd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ec3182ef85d573758801b9ed34ad034c441b247fe9aa52c23b8fead63671572ec338fa8c735c0194464d957d0eb0eddcc64aa4e300b83f40bb02a8a0dcf8d074
|
7
|
+
data.tar.gz: 35973818ce61c6b8a1d984125bcf5398940566d5f8f0d16b280fcdf7e2e5eea3c1dddf4cd2d9ee16b0ddff0d85933f683759996ed4feb6660f8279cf0213e19f
|
@@ -0,0 +1,49 @@
|
|
1
|
+
name: tests-6.0.3
|
2
|
+
|
3
|
+
on:
|
4
|
+
push:
|
5
|
+
branches: [ master ]
|
6
|
+
pull_request:
|
7
|
+
branches: [ master ]
|
8
|
+
|
9
|
+
jobs:
|
10
|
+
test:
|
11
|
+
|
12
|
+
runs-on: ubuntu-latest
|
13
|
+
|
14
|
+
services:
|
15
|
+
couchbase:
|
16
|
+
image: couchbase:enterprise-6.0.3
|
17
|
+
ports:
|
18
|
+
- 8091-8094:8091-8094
|
19
|
+
- 11210:11210
|
20
|
+
|
21
|
+
steps:
|
22
|
+
- name: Install build environment
|
23
|
+
run: sudo apt-get install -y libssl-dev cmake gcc g++ curl
|
24
|
+
|
25
|
+
- uses: actions/checkout@v2
|
26
|
+
with:
|
27
|
+
submodules: recursive
|
28
|
+
|
29
|
+
- name: Set up ruby
|
30
|
+
uses: ruby/setup-ruby@v1
|
31
|
+
with:
|
32
|
+
ruby-version: 2.6
|
33
|
+
|
34
|
+
- name: Install dependencies
|
35
|
+
run: bundle install
|
36
|
+
|
37
|
+
- name: Initialize couchbase
|
38
|
+
run: ./bin/init-cluster
|
39
|
+
|
40
|
+
- name: Compile extension
|
41
|
+
run: bundle exec rake compile
|
42
|
+
|
43
|
+
- name: Display library version
|
44
|
+
run: bundle exec ruby -I lib -r couchbase -e 'pp Couchbase::VERSION'
|
45
|
+
|
46
|
+
- name: Run tests
|
47
|
+
run: bundle exec rake test
|
48
|
+
env:
|
49
|
+
TEST_SERVER_VERSION: 6.0.3
|
@@ -0,0 +1,47 @@
|
|
1
|
+
name: tests
|
2
|
+
|
3
|
+
on:
|
4
|
+
push:
|
5
|
+
branches: [ master ]
|
6
|
+
pull_request:
|
7
|
+
branches: [ master ]
|
8
|
+
|
9
|
+
jobs:
|
10
|
+
test:
|
11
|
+
|
12
|
+
runs-on: ubuntu-latest
|
13
|
+
|
14
|
+
services:
|
15
|
+
couchbase:
|
16
|
+
image: couchbase
|
17
|
+
ports:
|
18
|
+
- 8091-8094:8091-8094
|
19
|
+
- 11210:11210
|
20
|
+
|
21
|
+
steps:
|
22
|
+
- name: Install build environment
|
23
|
+
run: sudo apt-get install -y libssl-dev cmake gcc g++ curl
|
24
|
+
|
25
|
+
- uses: actions/checkout@v2
|
26
|
+
with:
|
27
|
+
submodules: recursive
|
28
|
+
|
29
|
+
- name: Set up ruby
|
30
|
+
uses: ruby/setup-ruby@v1
|
31
|
+
with:
|
32
|
+
ruby-version: 2.6
|
33
|
+
|
34
|
+
- name: Install dependencies
|
35
|
+
run: bundle install
|
36
|
+
|
37
|
+
- name: Initialize couchbase
|
38
|
+
run: ./bin/init-cluster
|
39
|
+
|
40
|
+
- name: Compile extension
|
41
|
+
run: bundle exec rake compile
|
42
|
+
|
43
|
+
- name: Display library version
|
44
|
+
run: bundle exec ruby -I lib -r couchbase -e 'pp Couchbase::VERSION'
|
45
|
+
|
46
|
+
- name: Run tests
|
47
|
+
run: bundle exec rake test
|
data/.gitmodules
CHANGED
@@ -2,11 +2,16 @@
|
|
2
2
|
<dictionary name="gem_terms">
|
3
3
|
<words>
|
4
4
|
<w>adhoc</w>
|
5
|
+
<w>datasets</w>
|
6
|
+
<w>datastores</w>
|
5
7
|
<w>dataverse</w>
|
8
|
+
<w>keyspace</w>
|
6
9
|
<w>libcouchbase</w>
|
7
10
|
<w>opcode</w>
|
11
|
+
<w>subdoc</w>
|
8
12
|
<w>subdocument</w>
|
9
13
|
<w>upsert</w>
|
14
|
+
<w>upserting</w>
|
10
15
|
<w>xattr</w>
|
11
16
|
</words>
|
12
17
|
</dictionary>
|
@@ -2,6 +2,7 @@
|
|
2
2
|
<profile version="1.0">
|
3
3
|
<option name="myName" value="Project Default" />
|
4
4
|
<inspection_tool class="Rubocop" enabled="false" level="WARNING" enabled_by_default="false" />
|
5
|
+
<inspection_tool class="RubyInstanceMethodNamingConvention" enabled="false" level="WARNING" enabled_by_default="false" />
|
5
6
|
<inspection_tool class="RubyStringKeysInHashInspection" enabled="false" level="WARNING" enabled_by_default="false" />
|
6
7
|
</profile>
|
7
8
|
</component>
|
data/.idea/vcs.xml
CHANGED
@@ -6,6 +6,7 @@
|
|
6
6
|
<mapping directory="$PROJECT_DIR$/ext/third_party/gsl" vcs="Git" />
|
7
7
|
<mapping directory="$PROJECT_DIR$/ext/third_party/http_parser" vcs="Git" />
|
8
8
|
<mapping directory="$PROJECT_DIR$/ext/third_party/json" vcs="Git" />
|
9
|
+
<mapping directory="$PROJECT_DIR$/ext/third_party/snappy" vcs="Git" />
|
9
10
|
<mapping directory="$PROJECT_DIR$/ext/third_party/spdlog" vcs="Git" />
|
10
11
|
</component>
|
11
12
|
</project>
|
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -1,6 +1,59 @@
|
|
1
|
-
# Couchbase Ruby Client
|
1
|
+
# Couchbase Ruby Client [![tests](https://github.com/couchbase/couchbase-ruby-client/workflows/tests/badge.svg)](https://github.com/couchbase/couchbase-ruby-client/actions?query=workflow%3Atests)
|
2
2
|
|
3
|
-
This repository contains the third generation of the Couchbase SDK for Ruby (aka. SDKv3)
|
3
|
+
This repository contains the third generation of the official Couchbase SDK for Ruby (aka. SDKv3)
|
4
|
+
|
5
|
+
## Support and Feedback
|
6
|
+
|
7
|
+
If you find an issue, please file it in [our JIRA issue tracker](http://couchbase.com/issues/browse/RCBC).
|
8
|
+
Also you are always welcome on [our forum](https://forums.couchbase.com/c/ruby-sdk).
|
9
|
+
|
10
|
+
Please attach version information to ticket/post. To obtain this information use the following command:
|
11
|
+
|
12
|
+
$ ruby -r couchbase -e 'p Couchbase::VERSION'
|
13
|
+
|
14
|
+
## Installation
|
15
|
+
|
16
|
+
Add this line to your application's Gemfile:
|
17
|
+
|
18
|
+
```ruby
|
19
|
+
gem "couchbase", "3.0.0.alpha.2"
|
20
|
+
```
|
21
|
+
|
22
|
+
And then execute:
|
23
|
+
|
24
|
+
$ bundle install
|
25
|
+
|
26
|
+
Or install it yourself as:
|
27
|
+
|
28
|
+
$ gem install --pre couchbase
|
29
|
+
|
30
|
+
For some platforms we precompile binary packages. When, for some reason, binary package cannot be used, pass
|
31
|
+
`--platform=ruby` to `gem install` command (or check `specific_platform` and `force_ruby_platform` options of Bundler).
|
32
|
+
In latter case, see [Development](#development) section for build dependencies.
|
33
|
+
|
34
|
+
## Development
|
35
|
+
|
36
|
+
After checking out the repo, run `bin/setup` to install dependencies. You can also run `bin/console` for an interactive
|
37
|
+
prompt that will allow you to experiment.
|
38
|
+
|
39
|
+
Part of the library is written in C++, and requires both C and C++ compilers installed on the system. To configure build
|
40
|
+
environment, it uses `cmake`. When these tools installed, the build process is easy:
|
41
|
+
|
42
|
+
$ rake compile
|
43
|
+
|
44
|
+
## Generate Documentation
|
45
|
+
|
46
|
+
To generate documentation `yard` library is highly recommended.
|
47
|
+
|
48
|
+
$ gem install yard
|
49
|
+
|
50
|
+
The following steps will generate API reference for selected git tag:
|
51
|
+
|
52
|
+
$ rake doc
|
53
|
+
|
54
|
+
Now the API reference is accessible using web browser (where `VERSION` is current version of the SDK)
|
55
|
+
|
56
|
+
$ firefox doc/couchbase-ruby-client-VERSION/index.html
|
4
57
|
|
5
58
|
## License
|
6
59
|
|
data/Rakefile
CHANGED
@@ -27,3 +27,21 @@ task :compile do
|
|
27
27
|
sh "ruby #{File.join(__dir__, "ext", "extconf.rb")}"
|
28
28
|
end
|
29
29
|
end
|
30
|
+
|
31
|
+
task :doc do
|
32
|
+
require "couchbase/version"
|
33
|
+
input_dir = File.join(__dir__, "lib")
|
34
|
+
output_dir = File.join(__dir__, "doc", "couchbase-ruby-client-#{Couchbase::VERSION[:sdk]}")
|
35
|
+
rm_rf output_dir
|
36
|
+
sh "yard doc --output-dir #{output_dir} #{input_dir}"
|
37
|
+
puts "#{File.realpath(output_dir)}/index.html"
|
38
|
+
end
|
39
|
+
|
40
|
+
task :docs => :doc
|
41
|
+
|
42
|
+
task :render_git_revision do
|
43
|
+
build_version_path = File.join(__dir__, 'ext', 'build_version.hxx.in')
|
44
|
+
File.write(build_version_path, File.read(build_version_path).gsub('@BACKEND_GIT_REVISION@', `git rev-parse HEAD`.strip))
|
45
|
+
end
|
46
|
+
|
47
|
+
task :build => :render_git_revision
|
data/bin/init-cluster
ADDED
@@ -0,0 +1,62 @@
|
|
1
|
+
#!/usr/bin/env bash
|
2
|
+
|
3
|
+
# Copyright 2020 Couchbase, Inc.
|
4
|
+
#
|
5
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
6
|
+
# you may not use this file except in compliance with the License.
|
7
|
+
# You may obtain a copy of the License at
|
8
|
+
#
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
10
|
+
#
|
11
|
+
# Unless required by applicable law or agreed to in writing, software
|
12
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
13
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
+
# See the License for the specific language governing permissions and
|
15
|
+
# limitations under the License.
|
16
|
+
|
17
|
+
HOST="localhost"
|
18
|
+
USERNAME="Administrator"
|
19
|
+
PASSWORD="password"
|
20
|
+
CREDS="${USERNAME}:${PASSWORD}"
|
21
|
+
|
22
|
+
sleep 1
|
23
|
+
|
24
|
+
set -ex
|
25
|
+
|
26
|
+
# Ping cluster
|
27
|
+
curl -sS http://${HOST}:8091/pools
|
28
|
+
|
29
|
+
# Initialize Node
|
30
|
+
curl -sS -w "\n" -u ${CREDS} http://${HOST}:8091/nodes/self/controller/settings \
|
31
|
+
-d 'path=%2Fopt%2Fcouchbase%2Fvar%2Flib%2Fcouchbase%2Fdata' \
|
32
|
+
-d 'index_path=%2Fopt%2Fcouchbase%2Fvar%2Flib%2Fcouchbase%2Fdata'
|
33
|
+
|
34
|
+
# Setup Services
|
35
|
+
curl -sS -w "\n" -u ${CREDS} http://${HOST}:8091/node/controller/setupServices \
|
36
|
+
-d 'services=kv%2Cn1ql%2Cindex'
|
37
|
+
|
38
|
+
# Setup Memory Quotas
|
39
|
+
curl -sS -w "\n" -u ${CREDS} http://${HOST}:8091/pools/default \
|
40
|
+
-d 'memoryQuota=256' \
|
41
|
+
-d 'indexMemoryQuota=256'
|
42
|
+
|
43
|
+
# Setup Administrator username and password
|
44
|
+
curl -sS -w "\n" -u ${CREDS} http://${HOST}:8091/settings/web \
|
45
|
+
-d "password=${PASSWORD}" \
|
46
|
+
-d "username=${USERNAME}" \
|
47
|
+
-d "port=SAME"
|
48
|
+
|
49
|
+
# Setup index settings
|
50
|
+
curl -sS -w "\n" -u ${CREDS} http://${HOST}:8091/settings/indexes \
|
51
|
+
-d "storageMode=plasma"
|
52
|
+
|
53
|
+
# Setup Bucket
|
54
|
+
curl -sS -w "\n" -u ${CREDS} http://${HOST}:8091/pools/default/buckets \
|
55
|
+
-d 'flushEnabled=1' \
|
56
|
+
-d 'threadsNumber=3' \
|
57
|
+
-d 'replicaIndex=0' \
|
58
|
+
-d 'replicaNumber=0' \
|
59
|
+
-d 'evictionPolicy=valueOnly' \
|
60
|
+
-d 'ramQuotaMB=100' \
|
61
|
+
-d 'bucketType=membase' \
|
62
|
+
-d 'name=default'
|
data/bin/setup
CHANGED
data/couchbase.gemspec
CHANGED
@@ -23,8 +23,8 @@ Gem::Specification.new do |spec|
|
|
23
23
|
spec.email = ["sergey.avseyev@gmail.com"]
|
24
24
|
spec.summary = "SDK for Couchbase Server"
|
25
25
|
spec.description = "Modern SDK for Couchbase Server"
|
26
|
-
spec.homepage = "https://
|
27
|
-
spec.license = "
|
26
|
+
spec.homepage = "https://www.couchbase.com"
|
27
|
+
spec.license = "Apache-2.0"
|
28
28
|
|
29
29
|
spec.metadata["homepage_uri"] = spec.homepage
|
30
30
|
spec.metadata["source_code_uri"] = "https://github.com/couchbase/couchbase-ruby-client"
|
@@ -37,6 +37,7 @@ Gem::Specification.new do |spec|
|
|
37
37
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
38
38
|
spec.require_paths = ["lib"]
|
39
39
|
spec.extensions = ["ext/extconf.rb"]
|
40
|
+
spec.rdoc_options.append('--exclude', 'ext/')
|
40
41
|
|
41
42
|
spec.add_development_dependency "bundler", "~> 2.1"
|
42
43
|
spec.add_development_dependency "rake", "~> 13.0"
|
data/examples/crud.rb
CHANGED
@@ -1,4 +1,3 @@
|
|
1
|
-
require 'irb'
|
2
1
|
require 'couchbase'
|
3
2
|
include Couchbase
|
4
3
|
|
@@ -12,7 +11,7 @@ res = collection.upsert("foo", {"bar" => 42})
|
|
12
11
|
p res.cas
|
13
12
|
|
14
13
|
res = collection.get("foo")
|
15
|
-
p res.
|
14
|
+
p res.content
|
16
15
|
p res.cas
|
17
16
|
|
18
17
|
res = collection.remove("foo")
|
@@ -0,0 +1,47 @@
|
|
1
|
+
require 'couchbase'
|
2
|
+
include Couchbase
|
3
|
+
|
4
|
+
def measure(msg)
|
5
|
+
start = Time.now
|
6
|
+
yield
|
7
|
+
printf "%s in %.2f seconds\n", msg, Time.now - start
|
8
|
+
end
|
9
|
+
|
10
|
+
options = Cluster::ClusterOptions.new
|
11
|
+
options.authenticate("Administrator", "password")
|
12
|
+
cluster = Cluster.connect("couchbase://localhost", options)
|
13
|
+
|
14
|
+
bucket_name = "new_bucket"
|
15
|
+
|
16
|
+
all_buckets = cluster.buckets.get_all_buckets
|
17
|
+
puts "There are #{all_buckets.size} buckets on the cluster"
|
18
|
+
all_buckets.each do |bucket|
|
19
|
+
puts " * #{bucket.name} (type: #{bucket.bucket_type}, quota: #{bucket.ram_quota_mb} MB)"
|
20
|
+
end
|
21
|
+
|
22
|
+
if all_buckets.any? { |bucket| bucket.name == bucket_name }
|
23
|
+
measure("Bucket #{bucket_name.inspect} removed") { cluster.buckets.drop_bucket(bucket_name) }
|
24
|
+
end
|
25
|
+
|
26
|
+
settings = Management::BucketSettings.new
|
27
|
+
settings.name = bucket_name
|
28
|
+
settings.ram_quota_mb = 100
|
29
|
+
settings.flush_enabled = true
|
30
|
+
measure("New bucket #{bucket_name.inspect} created") { cluster.buckets.create_bucket(settings) }
|
31
|
+
|
32
|
+
sleep(1)
|
33
|
+
|
34
|
+
settings = cluster.buckets.get_bucket(bucket_name)
|
35
|
+
puts "Bucket #{bucket_name.inspect} settings:"
|
36
|
+
puts " * healthy? : #{settings.healthy?}"
|
37
|
+
puts " * RAM quota : #{settings.ram_quota_mb}"
|
38
|
+
puts " * number of replicas : #{settings.num_replicas}"
|
39
|
+
puts " * flush enabled: : #{settings.flush_enabled}"
|
40
|
+
puts " * max TTL : #{settings.max_expiry}"
|
41
|
+
puts " * compression mode : #{settings.compression_mode}"
|
42
|
+
puts " * replica indexes : #{settings.replica_indexes}"
|
43
|
+
puts " * ejection policy : #{settings.ejection_policy}"
|
44
|
+
|
45
|
+
measure("Bucket #{bucket_name.inspect} flushed") { cluster.buckets.flush_bucket(bucket_name) }
|
46
|
+
|
47
|
+
cluster.disconnect
|
@@ -0,0 +1,58 @@
|
|
1
|
+
require 'couchbase'
|
2
|
+
include Couchbase
|
3
|
+
|
4
|
+
def measure(msg)
|
5
|
+
start = Time.now
|
6
|
+
yield
|
7
|
+
printf "%s in %.2f seconds\n", msg, Time.now - start
|
8
|
+
end
|
9
|
+
|
10
|
+
bucket_name = "travel-sample"
|
11
|
+
scope_name = "myapp"
|
12
|
+
|
13
|
+
options = Cluster::ClusterOptions.new
|
14
|
+
options.authenticate("Administrator", "password")
|
15
|
+
cluster = Cluster.connect("couchbase://localhost", options)
|
16
|
+
bucket = cluster.bucket(bucket_name)
|
17
|
+
|
18
|
+
|
19
|
+
scopes = bucket.collections.get_all_scopes
|
20
|
+
puts "There are #{scopes.size} on the bucket \"#{bucket_name}\""
|
21
|
+
|
22
|
+
scopes.each do |scope|
|
23
|
+
puts " * \"#{scope.name}\" (#{scope.collections.size})"
|
24
|
+
scope.collections.each do |collection|
|
25
|
+
puts " * \"#{collection.name}\""
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
if scopes.any? {|scope| scope.name == scope_name }
|
30
|
+
measure("Scope \"#{scope_name}\" has been removed") { bucket.collections.drop_scope(scope_name) }
|
31
|
+
end
|
32
|
+
measure("Scope \"#{scope_name}\" has been created") { bucket.collections.create_scope(scope_name) }
|
33
|
+
|
34
|
+
scope = bucket.collections.get_scope(scope_name)
|
35
|
+
puts "Scope \"#{scope_name}\" has #{scope.collections.size} collections"
|
36
|
+
|
37
|
+
collection = Management::CollectionSpec.new
|
38
|
+
collection.scope_name = scope_name
|
39
|
+
collection.name = "users"
|
40
|
+
measure("Collection \"#{collection.name}\" on scope \"#{collection.scope_name}\" has been created") do
|
41
|
+
bucket.collections.create_collection(collection)
|
42
|
+
end
|
43
|
+
|
44
|
+
scope = bucket.collections.get_scope(scope_name)
|
45
|
+
puts "Scope \"#{scope_name}\" has #{scope.collections.size} collections"
|
46
|
+
scope.collections.each do |collection|
|
47
|
+
puts " * \"#{collection.name}\""
|
48
|
+
end
|
49
|
+
|
50
|
+
measure("Collection \"#{collection.name}\" on scope \"#{collection.scope_name}\" has been dropped") do
|
51
|
+
bucket.collections.drop_collection(collection)
|
52
|
+
end
|
53
|
+
|
54
|
+
scope = bucket.collections.get_scope(scope_name)
|
55
|
+
puts "Scope \"#{scope_name}\" has #{scope.collections.size} collections"
|
56
|
+
scope.collections.each do |collection|
|
57
|
+
puts " * \"#{collection.name}\""
|
58
|
+
end
|