couchbase-orm 1.0.0 → 1.1.0
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 +4 -4
- data/.travis.yml +14 -13
- data/README.md +21 -12
- data/Rakefile +3 -63
- data/couchbase-orm.gemspec +4 -4
- data/lib/couchbase-orm/version.rb +1 -1
- data/lib/rails/generators/couchbase_orm/config/config_generator.rb +3 -18
- data/lib/rails/generators/couchbase_orm/config/templates/couchbase.yml +5 -4
- data/spec/support.rb +6 -0
- metadata +11 -11
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f2b06085f930736b6220efb0e13013cc287a7891
|
4
|
+
data.tar.gz: b078737e87c3d752b317471fdf36b750b3a0d37d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e9e09cdc7885a995e5abff1dcd8282f1fda44060bda39d9690a1fc3a7ca909bc074816fecfde8e31cbbfd58ee582ef56de44f13b4d94991dc89fb9aa21a82d3e
|
7
|
+
data.tar.gz: d4bbe1ca233678304c2e1f811140f970ee796031483d5bdcfe50d228994d5158d6053223b25278ea0bc270acb0f39d4aced787dc6f3b4280230ed24a2bfefce6
|
data/.travis.yml
CHANGED
@@ -1,34 +1,35 @@
|
|
1
1
|
language: ruby
|
2
2
|
rvm:
|
3
|
-
- ruby-2.
|
4
|
-
- ruby-2.
|
3
|
+
- ruby-2.4.2
|
4
|
+
- ruby-2.3.5
|
5
5
|
- ruby-head
|
6
|
-
-
|
7
|
-
- rubinius
|
8
|
-
- jruby-9.1.5.0
|
6
|
+
- jruby-9.1.13.0
|
9
7
|
- jruby-head
|
8
|
+
- rubinius
|
9
|
+
- rubinius-3.86
|
10
10
|
branches:
|
11
11
|
only:
|
12
12
|
- master
|
13
13
|
before_install:
|
14
14
|
- git submodule update --init --recursive
|
15
15
|
- gem install ffi
|
16
|
-
- sudo apt-get install libev-dev
|
17
|
-
- sudo wget
|
18
|
-
- sudo dpkg -i couchbase-server-
|
19
|
-
- sleep
|
16
|
+
- sudo apt-get install libev-dev python-httplib2
|
17
|
+
- sudo wget https://packages.couchbase.com/releases/5.0.0/couchbase-server-enterprise_5.0.0-ubuntu14.04_amd64.deb
|
18
|
+
- sudo dpkg -i couchbase-server-enterprise_5.0.0-ubuntu14.04_amd64.deb
|
19
|
+
- sleep 8
|
20
20
|
- sudo service couchbase-server status
|
21
21
|
- /opt/couchbase/bin/couchbase-cli cluster-init -c 127.0.0.1:8091 --cluster-username=admin --cluster-password=password --cluster-ramsize=320 --cluster-index-ramsize=256 --cluster-fts-ramsize=256 --services=data,index,query,fts
|
22
|
-
- sleep
|
22
|
+
- sleep 5
|
23
23
|
- /opt/couchbase/bin/couchbase-cli server-info -c 127.0.0.1:8091 -u admin -p password
|
24
24
|
- /opt/couchbase/bin/couchbase-cli bucket-create -c 127.0.0.1:8091 -u admin -p password --bucket=default --bucket-type=couchbase --bucket-ramsize=160 --bucket-replica=0 --wait
|
25
|
-
|
26
|
-
-
|
25
|
+
- sleep 1
|
26
|
+
- /opt/couchbase/bin/couchbase-cli user-manage -c 127.0.0.1:8091 -u admin -p password --set --rbac-username tester --rbac-password password123 --rbac-name "Auto Tester" --roles admin --auth-domain local
|
27
|
+
- export TRAVIS_TEST=true
|
27
28
|
matrix:
|
28
29
|
allow_failures:
|
29
30
|
- rvm: jruby-head
|
30
31
|
- rvm: ruby-head
|
31
32
|
- rvm: rubinius
|
32
|
-
- rvm: rubinius-3.
|
33
|
+
- rvm: rubinius-3.86
|
33
34
|
sudo: required
|
34
35
|
dist: trusty
|
data/README.md
CHANGED
@@ -1,32 +1,41 @@
|
|
1
1
|
# Couchbase ORM for Rails
|
2
2
|
|
3
|
+
[](http://travis-ci.org/acaprojects/couchbase-orm)
|
4
|
+
|
3
5
|
## Rails integration
|
4
6
|
|
5
7
|
To generate config you can use `rails generate couchbase_orm:config`:
|
6
8
|
|
7
|
-
$ rails generate couchbase_orm:config
|
8
|
-
|
9
|
+
$ rails generate couchbase_orm:config dev_bucket dev_user dev_password
|
10
|
+
=> create config/couchbase.yml
|
9
11
|
|
10
12
|
It will generate this `config/couchbase.yml` for you:
|
11
13
|
|
12
14
|
common: &common
|
13
15
|
hosts: localhost
|
14
|
-
|
16
|
+
username: dev_user
|
17
|
+
password: dev_password
|
15
18
|
|
16
19
|
development:
|
17
20
|
<<: *common
|
18
|
-
bucket:
|
21
|
+
bucket: dev_bucket
|
19
22
|
|
20
23
|
test:
|
21
24
|
<<: *common
|
22
|
-
bucket:
|
23
|
-
password: for_test_bucket
|
25
|
+
bucket: dev_bucket_test
|
24
26
|
|
25
27
|
# set these environment variables on your production server
|
26
28
|
production:
|
27
|
-
|
28
|
-
|
29
|
-
|
29
|
+
hosts: <%= ENV['COUCHBASE_HOST'] || ENV['COUCHBASE_HOSTS'] %>
|
30
|
+
bucket: <%= ENV['COUCHBASE_BUCKET'] %>
|
31
|
+
username: <%= ENV['COUCHBASE_USER'] %>
|
32
|
+
password: <%= ENV['COUCHBASE_PASSWORD'] %>
|
33
|
+
|
34
|
+
Views are generated on application load if they don't exist or mismatch.
|
35
|
+
This works fine in production however by default in development models are lazy loaded.
|
36
|
+
|
37
|
+
# config/environments/development.rb
|
38
|
+
config.eager_load = true
|
30
39
|
|
31
40
|
|
32
41
|
## Examples
|
@@ -167,7 +176,7 @@ The request above pulls the same database document each time and returns it. A s
|
|
167
176
|
| Stat | Couchbase Ruby Model | Couchbase-ORM |
|
168
177
|
| :--- | :--- | :--- |
|
169
178
|
|Transactions|2500 hits|2500 hits|
|
170
|
-
|Elapsed time|12.24 secs|
|
171
|
-
|Response time|0.88 secs|0.
|
172
|
-
|Transaction rate|204.25 trans/sec|
|
179
|
+
|Elapsed time|12.24 secs|6.82 secs|
|
180
|
+
|Response time|0.88 secs|0.34 secs|
|
181
|
+
|Transaction rate|204.25 trans/sec|366.57 trans/sec|
|
173
182
|
|Request Code|[ruby-model-app](https://github.com/QuayPay/coauth/blob/95bbf5e5c3b3340e5af2da494b90c91c5e3d6eaa/app/controllers/auth/authorities_controller.rb#L6)|[couch-orm-app](https://github.com/QuayPay/coauth/blob/87f6fdeaab784ba252a5d38bbcf9e6b0477bb504/app/controllers/auth/authorities_controller.rb#L8)|
|
data/Rakefile
CHANGED
@@ -1,75 +1,15 @@
|
|
1
1
|
require 'rubygems'
|
2
2
|
require 'rspec/core/rake_task' # testing framework
|
3
3
|
require 'yard' # yard documentation
|
4
|
-
require 'ffi' # loads the extension
|
5
|
-
require 'rake/clean' # for the :clobber rake task
|
6
|
-
require File.expand_path('../lib/libcouchbase/ext/tasks', __FILE__) # platform specific rake tasks used by compile
|
7
|
-
|
8
|
-
|
9
4
|
|
10
5
|
# By default we don't run network tests
|
11
|
-
task :default => :
|
12
|
-
RSpec::Core::RakeTask.new(:limited_spec) do |t|
|
13
|
-
# Exclude full text search tests until we can automate index creation
|
14
|
-
t.rspec_opts = "--tag ~full_text_search --tag ~n1ql_query"
|
15
|
-
end
|
16
|
-
RSpec::Core::RakeTask.new(:spec)
|
6
|
+
task :default => :test
|
17
7
|
|
8
|
+
RSpec::Core::RakeTask.new(:spec)
|
18
9
|
|
19
10
|
desc 'Run all tests'
|
20
11
|
task :test => [:spec]
|
21
12
|
|
22
|
-
|
23
13
|
YARD::Rake::YardocTask.new do |t|
|
24
|
-
t.files = ['lib/**/*.rb', '-', '
|
25
|
-
end
|
26
|
-
|
27
|
-
|
28
|
-
desc 'Compile libcouchbase from submodule'
|
29
|
-
if FFI::Platform.windows?
|
30
|
-
task :compile => ["ext/bin/libcouchbase.#{FFI::Platform::LIBSUFFIX}"]
|
31
|
-
CLOBBER.include("ext/bin/libcouchbase.#{FFI::Platform::LIBSUFFIX}")
|
32
|
-
else
|
33
|
-
task :compile => ["ext/libcouchbase/build/lib/libcouchbase_libuv.#{FFI::Platform::LIBSUFFIX}"]
|
34
|
-
CLOBBER.include("ext/libcouchbase/build/lib/libcouchbase_libuv.#{FFI::Platform::LIBSUFFIX}")
|
35
|
-
end
|
36
|
-
|
37
|
-
|
38
|
-
# NOTE:: Generated on OSX
|
39
|
-
desc 'Generate the FFI bindings'
|
40
|
-
task :generate_bindings do
|
41
|
-
require "ffi/gen"
|
42
|
-
|
43
|
-
# NOTE:: you must export the include dir:
|
44
|
-
# export CPATH=./ext/libcouchbase/include/
|
45
|
-
#
|
46
|
-
# Once generated we need to:
|
47
|
-
# * adjust the ffi_lib path:
|
48
|
-
# ffi_lib ::File.expand_path("../../../../ext/libcouchbase/build/lib/libcouchbase_libuv.#{FFI::Platform::LIBSUFFIX}", __FILE__)
|
49
|
-
# * Rename some structs strings to pointers
|
50
|
-
# create_st3.rb -> connstr, username, passwd
|
51
|
-
# cmdhttp.rb -> body, reqhandle, content_type, username, password, host
|
52
|
-
# cmdfts.rb -> query
|
53
|
-
# respfts.rb -> row
|
54
|
-
# respviewquery.rb -> value, geometry, docid
|
55
|
-
# respn1ql.rb -> row
|
56
|
-
|
57
|
-
FFI::Gen.generate(
|
58
|
-
module_name: "Libcouchbase::Ext",
|
59
|
-
ffi_lib: "libcouchbase",
|
60
|
-
require_path: "libcouchbase/ext/libcouchbase",
|
61
|
-
headers: [
|
62
|
-
"./ext/libcouchbase/include/libcouchbase/couchbase.h",
|
63
|
-
"./ext/libcouchbase/include/libcouchbase/error.h",
|
64
|
-
"./ext/libcouchbase/include/libcouchbase/views.h",
|
65
|
-
"./ext/libcouchbase/include/libcouchbase/subdoc.h",
|
66
|
-
"./ext/libcouchbase/include/libcouchbase/n1ql.h",
|
67
|
-
"./ext/libcouchbase/include/libcouchbase/cbft.h",
|
68
|
-
"./ext/libcouchbase/include/libcouchbase/kvbuf.h"
|
69
|
-
],
|
70
|
-
# Searching for stdarg.h
|
71
|
-
cflags: ["-I/System/Library/Frameworks/Kernel.framework/Versions/A/Headers"],
|
72
|
-
prefixes: ["LCB_", "lcb_"],
|
73
|
-
output: "libcouchbase.rb"
|
74
|
-
)
|
14
|
+
t.files = ['lib/**/*.rb', '-', 'README.md']
|
75
15
|
end
|
data/couchbase-orm.gemspec
CHANGED
@@ -13,14 +13,14 @@ Gem::Specification.new do |gem|
|
|
13
13
|
gem.required_ruby_version = '>= 2.1.0'
|
14
14
|
gem.require_paths = ["lib"]
|
15
15
|
|
16
|
-
gem.add_runtime_dependency 'libcouchbase', '~> 1.
|
16
|
+
gem.add_runtime_dependency 'libcouchbase', '~> 1.2'
|
17
17
|
gem.add_runtime_dependency 'activemodel', '>= 4.0', '< 6.0'
|
18
18
|
gem.add_runtime_dependency 'radix', '~> 2.2' # converting numbers to and from any base
|
19
19
|
|
20
|
-
gem.add_development_dependency 'rake', '~>
|
21
|
-
gem.add_development_dependency 'rspec', '~> 3.
|
20
|
+
gem.add_development_dependency 'rake', '~> 12.2'
|
21
|
+
gem.add_development_dependency 'rspec', '~> 3.7'
|
22
22
|
gem.add_development_dependency 'yard', '~> 0.9'
|
23
|
-
gem.add_development_dependency 'minitest', '~> 5.
|
23
|
+
gem.add_development_dependency 'minitest', '~> 5.10'
|
24
24
|
|
25
25
|
gem.files = `git ls-files`.split("\n")
|
26
26
|
gem.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
@@ -1,21 +1,4 @@
|
|
1
1
|
# encoding: utf-8
|
2
|
-
#
|
3
|
-
# Author:: Couchbase <info@couchbase.com>
|
4
|
-
# Copyright:: 2012 Couchbase, Inc.
|
5
|
-
# License:: Apache License, Version 2.0
|
6
|
-
#
|
7
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
8
|
-
# you may not use this file except in compliance with the License.
|
9
|
-
# You may obtain a copy of the License at
|
10
|
-
#
|
11
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
12
|
-
#
|
13
|
-
# Unless required by applicable law or agreed to in writing, software
|
14
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
15
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
16
|
-
# See the License for the specific language governing permissions and
|
17
|
-
# limitations under the License.
|
18
|
-
#
|
19
2
|
|
20
3
|
require 'rails/generators/couchbase_orm_generator'
|
21
4
|
|
@@ -23,7 +6,9 @@ module CouchbaseOrm
|
|
23
6
|
module Generators
|
24
7
|
class ConfigGenerator < Rails::Generators::Base
|
25
8
|
desc 'Creates a Couchbase configuration file at config/couchbase.yml'
|
26
|
-
argument :
|
9
|
+
argument :bucket_name, type: :string, optional: true
|
10
|
+
argument :username, type: :string, optional: true
|
11
|
+
argument :password, type: :string, optional: true
|
27
12
|
|
28
13
|
def self.source_root
|
29
14
|
@_couchbase_source_root ||= File.expand_path('../templates', __FILE__)
|
@@ -1,18 +1,19 @@
|
|
1
1
|
common: &common
|
2
2
|
hosts: localhost
|
3
|
-
|
3
|
+
username: <%= username || bucket_name || app_name %>
|
4
|
+
password: <%= password %>
|
4
5
|
|
5
6
|
development:
|
6
7
|
<<: *common
|
7
|
-
bucket: <%=
|
8
|
+
bucket: <%= bucket_name || app_name %>
|
8
9
|
|
9
10
|
test:
|
10
11
|
<<: *common
|
11
|
-
bucket: <%=
|
12
|
-
password: for_test_bucket
|
12
|
+
bucket: <%= bucket_name || app_name %>_test
|
13
13
|
|
14
14
|
# set these environment variables on your production server
|
15
15
|
production:
|
16
16
|
hosts: <%%= ENV['COUCHBASE_HOST'] || ENV['COUCHBASE_HOSTS'] %>
|
17
17
|
bucket: <%%= ENV['COUCHBASE_BUCKET'] %>
|
18
|
+
username: <%%= ENV['COUCHBASE_USER'] %>
|
18
19
|
password: <%%= ENV['COUCHBASE_PASSWORD'] %>
|
data/spec/support.rb
CHANGED
@@ -1,6 +1,12 @@
|
|
1
1
|
# frozen_string_literal: true, encoding: ASCII-8BIT
|
2
2
|
|
3
3
|
|
4
|
+
if ENV['TRAVIS_TEST']
|
5
|
+
require 'libcouchbase'
|
6
|
+
Libcouchbase::Defaults.username = 'tester'
|
7
|
+
Libcouchbase::Defaults.password = 'password123'
|
8
|
+
end
|
9
|
+
|
4
10
|
require 'couchbase-orm'
|
5
11
|
require 'minitest/assertions'
|
6
12
|
require 'active_model/lint'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: couchbase-orm
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.1.0
|
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-
|
11
|
+
date: 2017-10-31 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: libcouchbase
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '1.
|
19
|
+
version: '1.2'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '1.
|
26
|
+
version: '1.2'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: activemodel
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -64,28 +64,28 @@ dependencies:
|
|
64
64
|
requirements:
|
65
65
|
- - "~>"
|
66
66
|
- !ruby/object:Gem::Version
|
67
|
-
version: '
|
67
|
+
version: '12.2'
|
68
68
|
type: :development
|
69
69
|
prerelease: false
|
70
70
|
version_requirements: !ruby/object:Gem::Requirement
|
71
71
|
requirements:
|
72
72
|
- - "~>"
|
73
73
|
- !ruby/object:Gem::Version
|
74
|
-
version: '
|
74
|
+
version: '12.2'
|
75
75
|
- !ruby/object:Gem::Dependency
|
76
76
|
name: rspec
|
77
77
|
requirement: !ruby/object:Gem::Requirement
|
78
78
|
requirements:
|
79
79
|
- - "~>"
|
80
80
|
- !ruby/object:Gem::Version
|
81
|
-
version: '3.
|
81
|
+
version: '3.7'
|
82
82
|
type: :development
|
83
83
|
prerelease: false
|
84
84
|
version_requirements: !ruby/object:Gem::Requirement
|
85
85
|
requirements:
|
86
86
|
- - "~>"
|
87
87
|
- !ruby/object:Gem::Version
|
88
|
-
version: '3.
|
88
|
+
version: '3.7'
|
89
89
|
- !ruby/object:Gem::Dependency
|
90
90
|
name: yard
|
91
91
|
requirement: !ruby/object:Gem::Requirement
|
@@ -106,14 +106,14 @@ dependencies:
|
|
106
106
|
requirements:
|
107
107
|
- - "~>"
|
108
108
|
- !ruby/object:Gem::Version
|
109
|
-
version: '5.
|
109
|
+
version: '5.10'
|
110
110
|
type: :development
|
111
111
|
prerelease: false
|
112
112
|
version_requirements: !ruby/object:Gem::Requirement
|
113
113
|
requirements:
|
114
114
|
- - "~>"
|
115
115
|
- !ruby/object:Gem::Version
|
116
|
-
version: '5.
|
116
|
+
version: '5.10'
|
117
117
|
description: A Couchbase ORM for Rails
|
118
118
|
email:
|
119
119
|
- steve@cotag.me
|
@@ -175,7 +175,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
175
175
|
version: '0'
|
176
176
|
requirements: []
|
177
177
|
rubyforge_project:
|
178
|
-
rubygems_version: 2.6.
|
178
|
+
rubygems_version: 2.6.14
|
179
179
|
signing_key:
|
180
180
|
specification_version: 4
|
181
181
|
summary: Couchbase ORM for Rails
|