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 CHANGED
@@ -1 +1 @@
1
- 0.7.3
1
+ 0.7.4
@@ -80,16 +80,18 @@ module ShyCouch
80
80
  @server.create_db(@name)
81
81
  end
82
82
  def getDocumentById(id)
83
- @server.get_document_by_id(@name, id)
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.get_document_by_id(@name, designName)
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
- get_document_by_id('_all_docs').rows.map { |doc|
92
- get_document_by_id(doc["id"])
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(get_document_by_id(uri))
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 = get_document_by_id design._id
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
- get_document_by_id(url)
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 get_document_by_id(db_name, id)
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}/", document.to_json)
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
@@ -130,43 +130,44 @@ class CouchDocumentTests
130
130
  end
131
131
 
132
132
  def test_push_new_documents
133
- @valid_documents.each { |doc|
133
+ @valid_documents.each { |doc|
134
134
  # put the document on the server, grab the server's response
135
- res = doc.push!(:push_to => $couchdb)
135
+ res = doc.push! :push_to => $couchdb
136
136
  # check that the server included "ok"=>true in its response
137
- assert(res["ok"])
137
+ assert(res["ok"])
138
138
  # check that the doc now has an id and a rev
139
- assert(doc["_id"])
140
- assert(doc["_rev"])
139
+ assert(doc["_id"])
140
+ assert(doc["_rev"])
141
141
  # get the new doc
142
- newDoc = $couchdb.pull_document(doc)
142
+ newDoc = $couchdb.pull_document(doc)
143
143
  # test equality of all the attributes aside from id and rev on the new document
144
- doc.attr_keys.each { |k|
145
- assert_equal(doc["k"], newDoc["k"])
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
- assert(doc._rev)
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
 
@@ -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::CouchDatabase.new settings
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.3
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-01 00:00:00.000000000Z
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: &70205277506120 !ruby/object:Gem::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: *70205277506120
26
+ version_requirements: *70284349002760
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: sourcify
29
- requirement: &70205281690720 !ruby/object:Gem::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: *70205281690720
37
+ version_requirements: *70284349002280
38
38
  - !ruby/object:Gem::Dependency
39
39
  name: ShyRubyJS
40
- requirement: &70205281690240 !ruby/object:Gem::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: *70205281690240
48
+ version_requirements: *70284349001800
49
49
  - !ruby/object:Gem::Dependency
50
50
  name: bundler
51
- requirement: &70205281689760 !ruby/object:Gem::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: *70205281689760
59
+ version_requirements: *70284349001320
60
60
  - !ruby/object:Gem::Dependency
61
61
  name: jeweler
62
- requirement: &70205281689280 !ruby/object:Gem::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: *70205281689280
70
+ version_requirements: *70284349000840
71
71
  - !ruby/object:Gem::Dependency
72
72
  name: rcov
73
- requirement: &70205281688800 !ruby/object:Gem::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: *70205281688800
81
+ version_requirements: *70284349000360
82
82
  - !ruby/object:Gem::Dependency
83
83
  name: ShyRubyJS
84
- requirement: &70205281688320 !ruby/object:Gem::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: *70205281688320
92
+ version_requirements: *70284348999880
93
93
  - !ruby/object:Gem::Dependency
94
94
  name: rest-client
95
- requirement: &70205281687840 !ruby/object:Gem::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: *70205281687840
103
+ version_requirements: *70284348999400
104
104
  - !ruby/object:Gem::Dependency
105
105
  name: sourcify
106
- requirement: &70205281687360 !ruby/object:Gem::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: *70205281687360
114
+ version_requirements: *70284348998920
115
115
  - !ruby/object:Gem::Dependency
116
116
  name: mime-types
117
- requirement: &70205281686880 !ruby/object:Gem::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: *70205281686880
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: -517428942183322011
165
+ hash: -2484123326453231349
166
166
  required_rubygems_version: !ruby/object:Gem::Requirement
167
167
  none: false
168
168
  requirements: