couchbase-docstore 0.1.4 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
@@ -1,21 +1,31 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
2
|
lib = File.expand_path('../lib', __FILE__)
|
3
3
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
|
4
5
|
require 'couchbase_doc_store/version'
|
5
6
|
|
6
7
|
Gem::Specification.new do |gem|
|
7
8
|
gem.name = "couchbase-docstore"
|
8
|
-
gem.version =
|
9
|
+
gem.version = "0.3.0"
|
9
10
|
gem.authors = ["Jasdeep Jaitla"]
|
10
11
|
gem.email = ["jasdeep@scalabl3.com"]
|
11
12
|
gem.description = %q{A Convenient Wrapper for the Couchbase gem, uses Map gem and adds new functionality}
|
12
13
|
gem.summary = %q{You simply use the Couchbase gem, or you can use this wrapper that encapsulates the gem and adds some subjective conveniences. }
|
13
14
|
gem.homepage = "https://github.com/scalabl3/couchbase-docstore"
|
14
15
|
|
15
|
-
gem.add_dependency('couchbase-settings', '>= 0.
|
16
|
-
gem.add_dependency('couchbase', '>= 1.2
|
16
|
+
gem.add_dependency('couchbase-settings', '>= 0.2.7')
|
17
|
+
gem.add_dependency('couchbase', '>= 1.2')
|
17
18
|
|
18
|
-
gem.files
|
19
|
+
gem.files = [
|
20
|
+
"Gemfile",
|
21
|
+
"LICENSE.txt",
|
22
|
+
"README.md",
|
23
|
+
"Rakefile",
|
24
|
+
"lib/couchbase-docstore.rb",
|
25
|
+
"lib/couchbase_doc_store/railtie.rb",
|
26
|
+
"lib/couchbase_doc_store/version.rb",
|
27
|
+
"couchbase-docstore.gemspec"
|
28
|
+
]
|
19
29
|
gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
20
30
|
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
21
31
|
gem.require_paths = ["lib"]
|
@@ -1,32 +1,10 @@
|
|
1
1
|
require 'couchbase'
|
2
2
|
require 'map'
|
3
|
-
require 'couchbase_settings'
|
4
3
|
require "couchbase_doc_store/version"
|
4
|
+
require "couchbase_doc_store/railtie" if defined?(Rails)
|
5
5
|
|
6
6
|
module CouchbaseDocStore
|
7
7
|
|
8
|
-
#Rails.logger.debug(CouchbaseSetting.pm)
|
9
|
-
|
10
|
-
setting_hash = {}
|
11
|
-
if (CouchbaseSetting.respond_to?("servers") && CouchbaseSetting.servers && !CouchbaseSetting.servers.empty?)
|
12
|
-
setting_hash[:node_list] = CouchbaseSetting.servers
|
13
|
-
elsif CouchbaseSetting.respond_to?("server")
|
14
|
-
|
15
|
-
setting_hash[:hostname] = CouchbaseSetting.server
|
16
|
-
else
|
17
|
-
raise ArgumentError, "You didn't set a Couchbase Server in your /config/couchbase.yml file!"
|
18
|
-
end
|
19
|
-
setting_hash[:pool] = "default"
|
20
|
-
setting_hash[:bucket] = CouchbaseSetting.bucket
|
21
|
-
setting_hash[:port] = 8091
|
22
|
-
|
23
|
-
if (CouchbaseSetting.respond_to?("password") && CouchbaseSetting.password && !CouchbaseSetting.password.blank?)
|
24
|
-
setting_hash[:username] = CouchbaseSetting.bucket
|
25
|
-
setting_hash[:password] = CouchbaseSetting.password
|
26
|
-
end
|
27
|
-
|
28
|
-
CB = Couchbase.connect(setting_hash)
|
29
|
-
|
30
8
|
#### INSTANCE METHODS
|
31
9
|
|
32
10
|
# Check if a key/document exists
|
@@ -93,57 +71,92 @@ module CouchbaseDocStore
|
|
93
71
|
#### CLASS METHODS
|
94
72
|
|
95
73
|
class << self
|
74
|
+
|
75
|
+
def connection
|
76
|
+
$cb
|
77
|
+
end
|
78
|
+
|
79
|
+
def connect!(setting_hash = {hostname: "127.0.0.1", bucket: "default"})
|
80
|
+
puts "---------------------------------------------------"
|
81
|
+
if defined? (CouchbaseSetting)
|
82
|
+
|
83
|
+
puts "CouchbaseSetting found..."
|
84
|
+
|
85
|
+
if (CouchbaseSetting.respond_to?("servers") && CouchbaseSetting.servers && !CouchbaseSetting.servers.empty?)
|
86
|
+
setting_hash[:node_list] = CouchbaseSetting.servers
|
87
|
+
elsif CouchbaseSetting.respond_to?("server")
|
88
|
+
setting_hash[:hostname] = CouchbaseSetting.server
|
89
|
+
else
|
90
|
+
raise ArgumentError, "You didn't set Couchbase Server(s)/Bucket in your /config/couchbase.yml file!"
|
91
|
+
end
|
92
|
+
|
93
|
+
setting_hash[:pool] = "default"
|
94
|
+
setting_hash[:bucket] = CouchbaseSetting.bucket
|
95
|
+
setting_hash[:port] = 8091
|
96
|
+
|
97
|
+
if (CouchbaseSetting.respond_to?("password") && CouchbaseSetting.password && !CouchbaseSetting.password.blank?)
|
98
|
+
setting_hash[:username] = CouchbaseSetting.bucket
|
99
|
+
setting_hash[:password] = CouchbaseSetting.password
|
100
|
+
end
|
101
|
+
end
|
96
102
|
|
103
|
+
$cb = Couchbase.connect(setting_hash)
|
104
|
+
|
105
|
+
puts "CouchbaseDocStore connected..."
|
106
|
+
puts $cb.inspect
|
107
|
+
puts "---------------------------------------------------"
|
108
|
+
end
|
109
|
+
|
97
110
|
def delete_all_documents!
|
98
|
-
|
111
|
+
$cb.flush
|
99
112
|
end
|
100
113
|
|
101
114
|
def document_exists?(key)
|
102
115
|
return nil unless key
|
103
116
|
|
104
117
|
# Save quiet setting
|
105
|
-
tmp =
|
118
|
+
tmp = $cb.quiet
|
106
119
|
|
107
120
|
# Set quiet to be sure
|
108
|
-
|
121
|
+
$cb.quiet = true
|
109
122
|
|
110
|
-
doc =
|
123
|
+
doc = $cb.get(key)
|
111
124
|
|
112
125
|
# Restore quiet setting
|
113
|
-
|
126
|
+
$cb.quiet = tmp
|
114
127
|
|
115
128
|
!doc.nil?
|
116
129
|
end
|
117
130
|
|
118
131
|
def initialize_document(key, value, args={})
|
119
132
|
return nil unless key
|
120
|
-
|
133
|
+
$cb.quiet = true
|
121
134
|
doc = CouchbaseDocStore.get_document( key )
|
122
|
-
(value.is_a?(Fixnum) || value.is_a?(Integer) ?
|
135
|
+
(value.is_a?(Fixnum) || value.is_a?(Integer) ? $cb.set( key, value ) : $cb.add( key, value )) unless doc
|
123
136
|
end
|
124
137
|
|
125
138
|
def create_document(key, value, args={})
|
126
139
|
return nil unless key
|
127
|
-
|
128
|
-
|
140
|
+
$cb.quiet = args[:quiet] || true
|
141
|
+
$cb.add(key, value, args) # => if !quiet, Generates Couchbase::Error::KeyExists if key already exists
|
129
142
|
end
|
130
143
|
|
131
144
|
def replace_document(key, value, args = {})
|
132
145
|
return nil unless key
|
133
|
-
|
134
|
-
|
146
|
+
$cb.quiet = args[:quiet] || true
|
147
|
+
$cb.replace(key, value) # => if !quiet, Generates Couchbase::Error::NotFound if key doesn't exist
|
135
148
|
end
|
136
149
|
|
137
150
|
def get_document(key, args = {})
|
138
151
|
return nil unless key
|
139
|
-
|
140
|
-
doc =
|
152
|
+
$cb.quiet = args[:quiet] || true
|
153
|
+
doc = $cb.get(key, args)
|
141
154
|
doc.is_a?(Hash) ? Map.new(doc) : doc
|
142
155
|
end
|
143
156
|
|
144
157
|
def get_documents(keys = [], args = {})
|
145
158
|
return nil unless keys || keys.empty?
|
146
|
-
values =
|
159
|
+
values = $cb.get(keys, args)
|
147
160
|
|
148
161
|
if values.is_a? Hash
|
149
162
|
tmp = []
|
@@ -160,27 +173,27 @@ module CouchbaseDocStore
|
|
160
173
|
|
161
174
|
def delete_document(key, args={})
|
162
175
|
return nil unless key
|
163
|
-
|
164
|
-
|
176
|
+
$cb.quiet = args[:quiet] || true
|
177
|
+
$cb.delete(key)
|
165
178
|
end
|
166
179
|
|
167
180
|
def increase_atomic_count(key, args={} )
|
168
181
|
return nil unless key
|
169
|
-
|
170
|
-
|
182
|
+
$cb.quiet = args[:quiet] || true
|
183
|
+
$cb.incr(key, args[:amount] || 1)
|
171
184
|
end
|
172
185
|
|
173
186
|
def decrease_atomic_count(key, args={})
|
174
187
|
return nil unless key
|
175
|
-
|
176
|
-
|
188
|
+
$cb.quiet = args[:quiet] || true
|
189
|
+
$cb.decr(key, args[:amount] || 1)
|
177
190
|
end
|
178
191
|
|
179
192
|
# preferred way is to use create/replace instead of this to make sure there are no collisions
|
180
193
|
def force_set_document(key, value, args={})
|
181
194
|
return nil unless key
|
182
|
-
|
183
|
-
|
195
|
+
$cb.quiet = args[:quiet] || true
|
196
|
+
$cb.set(key, value, args)
|
184
197
|
end
|
185
198
|
|
186
199
|
end# end ClassMethods
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: couchbase-docstore
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2013-03-12 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: couchbase-settings
|
@@ -18,7 +18,7 @@ dependencies:
|
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
20
20
|
- !ruby/object:Gem::Version
|
21
|
-
version: 0.
|
21
|
+
version: 0.2.7
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
24
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -26,7 +26,7 @@ dependencies:
|
|
26
26
|
requirements:
|
27
27
|
- - ! '>='
|
28
28
|
- !ruby/object:Gem::Version
|
29
|
-
version: 0.
|
29
|
+
version: 0.2.7
|
30
30
|
- !ruby/object:Gem::Dependency
|
31
31
|
name: couchbase
|
32
32
|
requirement: !ruby/object:Gem::Requirement
|
@@ -34,7 +34,7 @@ dependencies:
|
|
34
34
|
requirements:
|
35
35
|
- - ! '>='
|
36
36
|
- !ruby/object:Gem::Version
|
37
|
-
version: 1.2
|
37
|
+
version: '1.2'
|
38
38
|
type: :runtime
|
39
39
|
prerelease: false
|
40
40
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -42,7 +42,7 @@ dependencies:
|
|
42
42
|
requirements:
|
43
43
|
- - ! '>='
|
44
44
|
- !ruby/object:Gem::Version
|
45
|
-
version: 1.2
|
45
|
+
version: '1.2'
|
46
46
|
description: A Convenient Wrapper for the Couchbase gem, uses Map gem and adds new
|
47
47
|
functionality
|
48
48
|
email:
|
@@ -51,14 +51,14 @@ executables: []
|
|
51
51
|
extensions: []
|
52
52
|
extra_rdoc_files: []
|
53
53
|
files:
|
54
|
-
- .gitignore
|
55
54
|
- Gemfile
|
56
55
|
- LICENSE.txt
|
57
56
|
- README.md
|
58
57
|
- Rakefile
|
59
|
-
-
|
60
|
-
- lib/couchbase_doc_store.rb
|
58
|
+
- lib/couchbase-docstore.rb
|
59
|
+
- lib/couchbase_doc_store/railtie.rb
|
61
60
|
- lib/couchbase_doc_store/version.rb
|
61
|
+
- couchbase-docstore.gemspec
|
62
62
|
homepage: https://github.com/scalabl3/couchbase-docstore
|
63
63
|
licenses: []
|
64
64
|
post_install_message:
|