ShyCouch 0.7.3 → 0.7.4
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.
- data/VERSION +1 -1
- data/lib/ShyCouch.rb +14 -9
- data/test/test_couch_document.rb +16 -15
- data/test/test_couchdb_api.rb +1 -1
- metadata +23 -23
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.7.
|
1
|
+
0.7.4
|
data/lib/ShyCouch.rb
CHANGED
@@ -80,16 +80,18 @@ module ShyCouch
|
|
80
80
|
@server.create_db(@name)
|
81
81
|
end
|
82
82
|
def getDocumentById(id)
|
83
|
-
@server.
|
83
|
+
@server.getDocumentById @name, id
|
84
|
+
rescue RestClient::ResourceNotFound
|
85
|
+
raise ShyCouch::ResourceNotFound
|
84
86
|
end
|
85
87
|
|
86
88
|
def pull_design(designName)
|
87
|
-
doc = @server.
|
89
|
+
doc = @server.getDocumentById(@name, designName)
|
88
90
|
return ShyCouch::Data::Design.new(designName).merge! doc
|
89
91
|
end
|
90
92
|
def all_docs
|
91
|
-
|
92
|
-
|
93
|
+
getDocumentById('_all_docs').rows.map { |doc|
|
94
|
+
getDocumentById(doc["id"])
|
93
95
|
}
|
94
96
|
end
|
95
97
|
def uri
|
@@ -125,7 +127,7 @@ module ShyCouch
|
|
125
127
|
# build query string from the options
|
126
128
|
uri = "_design/#{design_name}/_view/#{view_name}"
|
127
129
|
uri += "?#{query_string opts}" if opts.length > 0
|
128
|
-
result = ShyCouch::Data::ViewResultHandler.init(
|
130
|
+
result = ShyCouch::Data::ViewResultHandler.init(getDocumentById(uri))
|
129
131
|
if opts.has_key? :key and result.kind_of? ShyCouch::Data::CouchDocumentCollection #result.length == 1
|
130
132
|
# Return it as a document if it was a key query
|
131
133
|
return result[0]
|
@@ -180,7 +182,7 @@ module ShyCouch
|
|
180
182
|
rescue ShyCouch::DesignConflict => e
|
181
183
|
# Get the rev of the existing one, then try again!
|
182
184
|
# If that fails, it should still throw an error
|
183
|
-
existing_design =
|
185
|
+
existing_design = getDocumentById design._id
|
184
186
|
design._rev = existing_design._rev
|
185
187
|
design._rev = push_document!(design)["rev"]
|
186
188
|
end
|
@@ -189,7 +191,7 @@ module ShyCouch
|
|
189
191
|
|
190
192
|
def view(design, view_obj)
|
191
193
|
url = "#{design._id}/_view/#{view_obj.name}"
|
192
|
-
|
194
|
+
getDocumentById(url)
|
193
195
|
end
|
194
196
|
|
195
197
|
private
|
@@ -230,6 +232,8 @@ module ShyCouch
|
|
230
232
|
if settings["db"]["user"]
|
231
233
|
raise ShyCouch::DatabaseError unless settings["db"]["password"]
|
232
234
|
end
|
235
|
+
rescue NoMethodError
|
236
|
+
raise ShyCouch::DatabaseError
|
233
237
|
end
|
234
238
|
|
235
239
|
class CouchServerConnection
|
@@ -260,6 +264,7 @@ module ShyCouch
|
|
260
264
|
end
|
261
265
|
|
262
266
|
def req(kind, uri, data = nil)
|
267
|
+
# TODO - remove this
|
263
268
|
raise TypeError unless [:get,:delete,:put,:post].include?(kind) # only support these 4 request methods currently
|
264
269
|
if @user and @password
|
265
270
|
res = couch_req_with_auth kind, uri, data
|
@@ -308,7 +313,7 @@ module ShyCouch
|
|
308
313
|
pull_all_doc_ids(db_name).map { |id| Data::CouchDocument.new(req(:get,"/#{db_name}/#{id}")) }
|
309
314
|
end
|
310
315
|
|
311
|
-
def
|
316
|
+
def getDocumentById(db_name, id)
|
312
317
|
document = Data::CouchDocument.new(:data => req(:get,"/#{db_name}/#{id}"))
|
313
318
|
end
|
314
319
|
def pull_document(db_name, document)
|
@@ -321,7 +326,7 @@ module ShyCouch
|
|
321
326
|
raise TypeError unless document.kind_of?(ShyCouch::Data::CouchDocument)
|
322
327
|
raise JSON::GeneratorError unless document.valid?
|
323
328
|
if document["_rev"]
|
324
|
-
return req(:put, "/#{db_name}/#{document._id}?rev=#{document._rev}
|
329
|
+
return req(:put, "/#{db_name}/#{document._id}?rev=#{document._rev}", document.to_json)
|
325
330
|
elsif document["_id"]
|
326
331
|
return req(:put, "/#{db_name}/#{document._id}", document.to_json)
|
327
332
|
else
|
data/test/test_couch_document.rb
CHANGED
@@ -130,43 +130,44 @@ class CouchDocumentTests
|
|
130
130
|
end
|
131
131
|
|
132
132
|
def test_push_new_documents
|
133
|
-
|
133
|
+
@valid_documents.each { |doc|
|
134
134
|
# put the document on the server, grab the server's response
|
135
|
-
|
135
|
+
res = doc.push! :push_to => $couchdb
|
136
136
|
# check that the server included "ok"=>true in its response
|
137
|
-
|
137
|
+
assert(res["ok"])
|
138
138
|
# check that the doc now has an id and a rev
|
139
|
-
|
140
|
-
|
139
|
+
assert(doc["_id"])
|
140
|
+
assert(doc["_rev"])
|
141
141
|
# get the new doc
|
142
|
-
|
142
|
+
newDoc = $couchdb.pull_document(doc)
|
143
143
|
# test equality of all the attributes aside from id and rev on the new document
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
144
|
+
doc.attr_keys.each { |k|
|
145
|
+
assert_equal(doc["k"], newDoc["k"])
|
146
|
+
}
|
147
|
+
}
|
148
148
|
end
|
149
149
|
|
150
150
|
def test_change_existing_documents
|
151
151
|
@existing_valid_documents.each { |doc|
|
152
152
|
# add some more attributes
|
153
|
-
|
153
|
+
doc = doc.pull! :pull_from => $couchdb
|
154
|
+
assert(doc["_rev"])
|
154
155
|
doc["owner"] = "the guvvmint"
|
155
156
|
doc["buttonCount"] = nil
|
156
157
|
doc["friends"] = nil
|
157
158
|
doc.buttonCount = 5
|
158
159
|
doc.friends = ["alan", "alex", "all me other mates"]
|
159
|
-
|
160
160
|
res = doc.push!(:push_to => $couchdb)
|
161
161
|
assert(res["ok"])
|
162
|
-
|
163
|
-
# pull it from the database again
|
164
162
|
checkDoc = $couchdb.pull_document(doc)
|
165
|
-
|
163
|
+
|
166
164
|
# check that the one from the database has all the new attributes
|
167
165
|
assert_equal(doc.owner, checkDoc.owner)
|
168
166
|
assert_equal(doc.buttonCount, checkDoc.buttonCount)
|
169
167
|
assert_equal(doc.friends, checkDoc.friends)
|
168
|
+
|
169
|
+
|
170
|
+
# pull it from the database again
|
170
171
|
}
|
171
172
|
end
|
172
173
|
|
data/test/test_couchdb_api.rb
CHANGED
@@ -47,7 +47,7 @@ class TestCouchDBAPI < Test::Unit::TestCase
|
|
47
47
|
# should throw an error when the settings hash is invalid
|
48
48
|
invalid_settings.each do |settings|
|
49
49
|
assert_raises ShyCouch::DatabaseError do
|
50
|
-
ShyCouch::
|
50
|
+
ShyCouch::getDB settings
|
51
51
|
end
|
52
52
|
assert_raises ArgumentError do
|
53
53
|
ShyCouch::CouchDatabase.new
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ShyCouch
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.7.
|
4
|
+
version: 0.7.4
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -11,11 +11,11 @@ authors:
|
|
11
11
|
autorequire:
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
|
-
date: 2011-12-
|
14
|
+
date: 2011-12-02 00:00:00.000000000Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: rest-client
|
18
|
-
requirement: &
|
18
|
+
requirement: &70284349002760 !ruby/object:Gem::Requirement
|
19
19
|
none: false
|
20
20
|
requirements:
|
21
21
|
- - ! '>='
|
@@ -23,10 +23,10 @@ dependencies:
|
|
23
23
|
version: '0'
|
24
24
|
type: :runtime
|
25
25
|
prerelease: false
|
26
|
-
version_requirements: *
|
26
|
+
version_requirements: *70284349002760
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: sourcify
|
29
|
-
requirement: &
|
29
|
+
requirement: &70284349002280 !ruby/object:Gem::Requirement
|
30
30
|
none: false
|
31
31
|
requirements:
|
32
32
|
- - ~>
|
@@ -34,10 +34,10 @@ dependencies:
|
|
34
34
|
version: 0.5.0
|
35
35
|
type: :runtime
|
36
36
|
prerelease: false
|
37
|
-
version_requirements: *
|
37
|
+
version_requirements: *70284349002280
|
38
38
|
- !ruby/object:Gem::Dependency
|
39
39
|
name: ShyRubyJS
|
40
|
-
requirement: &
|
40
|
+
requirement: &70284349001800 !ruby/object:Gem::Requirement
|
41
41
|
none: false
|
42
42
|
requirements:
|
43
43
|
- - ! '>='
|
@@ -45,10 +45,10 @@ dependencies:
|
|
45
45
|
version: 0.2.0
|
46
46
|
type: :runtime
|
47
47
|
prerelease: false
|
48
|
-
version_requirements: *
|
48
|
+
version_requirements: *70284349001800
|
49
49
|
- !ruby/object:Gem::Dependency
|
50
50
|
name: bundler
|
51
|
-
requirement: &
|
51
|
+
requirement: &70284349001320 !ruby/object:Gem::Requirement
|
52
52
|
none: false
|
53
53
|
requirements:
|
54
54
|
- - ~>
|
@@ -56,10 +56,10 @@ dependencies:
|
|
56
56
|
version: 1.0.0
|
57
57
|
type: :development
|
58
58
|
prerelease: false
|
59
|
-
version_requirements: *
|
59
|
+
version_requirements: *70284349001320
|
60
60
|
- !ruby/object:Gem::Dependency
|
61
61
|
name: jeweler
|
62
|
-
requirement: &
|
62
|
+
requirement: &70284349000840 !ruby/object:Gem::Requirement
|
63
63
|
none: false
|
64
64
|
requirements:
|
65
65
|
- - ~>
|
@@ -67,10 +67,10 @@ dependencies:
|
|
67
67
|
version: 1.6.4
|
68
68
|
type: :development
|
69
69
|
prerelease: false
|
70
|
-
version_requirements: *
|
70
|
+
version_requirements: *70284349000840
|
71
71
|
- !ruby/object:Gem::Dependency
|
72
72
|
name: rcov
|
73
|
-
requirement: &
|
73
|
+
requirement: &70284349000360 !ruby/object:Gem::Requirement
|
74
74
|
none: false
|
75
75
|
requirements:
|
76
76
|
- - ! '>='
|
@@ -78,10 +78,10 @@ dependencies:
|
|
78
78
|
version: '0'
|
79
79
|
type: :development
|
80
80
|
prerelease: false
|
81
|
-
version_requirements: *
|
81
|
+
version_requirements: *70284349000360
|
82
82
|
- !ruby/object:Gem::Dependency
|
83
83
|
name: ShyRubyJS
|
84
|
-
requirement: &
|
84
|
+
requirement: &70284348999880 !ruby/object:Gem::Requirement
|
85
85
|
none: false
|
86
86
|
requirements:
|
87
87
|
- - ! '>='
|
@@ -89,10 +89,10 @@ dependencies:
|
|
89
89
|
version: 0.2.0
|
90
90
|
type: :runtime
|
91
91
|
prerelease: false
|
92
|
-
version_requirements: *
|
92
|
+
version_requirements: *70284348999880
|
93
93
|
- !ruby/object:Gem::Dependency
|
94
94
|
name: rest-client
|
95
|
-
requirement: &
|
95
|
+
requirement: &70284348999400 !ruby/object:Gem::Requirement
|
96
96
|
none: false
|
97
97
|
requirements:
|
98
98
|
- - ! '>='
|
@@ -100,10 +100,10 @@ dependencies:
|
|
100
100
|
version: 1.6.7
|
101
101
|
type: :runtime
|
102
102
|
prerelease: false
|
103
|
-
version_requirements: *
|
103
|
+
version_requirements: *70284348999400
|
104
104
|
- !ruby/object:Gem::Dependency
|
105
105
|
name: sourcify
|
106
|
-
requirement: &
|
106
|
+
requirement: &70284348998920 !ruby/object:Gem::Requirement
|
107
107
|
none: false
|
108
108
|
requirements:
|
109
109
|
- - ! '>='
|
@@ -111,10 +111,10 @@ dependencies:
|
|
111
111
|
version: '0'
|
112
112
|
type: :runtime
|
113
113
|
prerelease: false
|
114
|
-
version_requirements: *
|
114
|
+
version_requirements: *70284348998920
|
115
115
|
- !ruby/object:Gem::Dependency
|
116
116
|
name: mime-types
|
117
|
-
requirement: &
|
117
|
+
requirement: &70284348998440 !ruby/object:Gem::Requirement
|
118
118
|
none: false
|
119
119
|
requirements:
|
120
120
|
- - ! '>='
|
@@ -122,7 +122,7 @@ dependencies:
|
|
122
122
|
version: '0'
|
123
123
|
type: :runtime
|
124
124
|
prerelease: false
|
125
|
-
version_requirements: *
|
125
|
+
version_requirements: *70284348998440
|
126
126
|
description: Ruby API for CouchDB, designed to work with the Camping micro-framework.
|
127
127
|
email: danbryan@gmail.com
|
128
128
|
executables: []
|
@@ -162,7 +162,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
162
162
|
version: '0'
|
163
163
|
segments:
|
164
164
|
- 0
|
165
|
-
hash: -
|
165
|
+
hash: -2484123326453231349
|
166
166
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
167
167
|
none: false
|
168
168
|
requirements:
|