couchrest 0.38 → 1.0.0.beta
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/README.md +8 -8
- data/Rakefile +3 -4
- data/couchrest.gemspec +25 -105
- data/history.txt +5 -4
- data/lib/couchrest.rb +31 -52
- data/lib/couchrest/{core/database.rb → database.rb} +6 -11
- data/lib/couchrest/{core/design.rb → design.rb} +2 -2
- data/lib/couchrest/{core/document.rb → document.rb} +1 -1
- data/lib/couchrest/helper/attachments.rb +29 -0
- data/lib/couchrest/middlewares/logger.rb +3 -3
- data/lib/couchrest/monkeypatches.rb +1 -71
- data/lib/couchrest/{core/response.rb → response.rb} +0 -0
- data/lib/couchrest/{core/rest_api.rb → rest_api.rb} +8 -12
- data/lib/couchrest/{core/server.rb → server.rb} +0 -2
- data/spec/couchrest/{core/couchrest_spec.rb → couchrest_spec.rb} +15 -9
- data/spec/couchrest/{core/database_spec.rb → database_spec.rb} +4 -4
- data/spec/couchrest/{core/design_spec.rb → design_spec.rb} +2 -2
- data/spec/couchrest/{core/document_spec.rb → document_spec.rb} +1 -1
- data/spec/couchrest/{core/server_spec.rb → server_spec.rb} +2 -2
- data/spec/spec.opts +0 -1
- data/spec/spec_helper.rb +0 -4
- metadata +32 -133
- data/examples/model/example.rb +0 -144
- data/lib/couchrest/core/adapters/restclient.rb +0 -35
- data/lib/couchrest/core/http_abstraction.rb +0 -48
- data/lib/couchrest/core/view.rb +0 -4
- data/lib/couchrest/mixins.rb +0 -4
- data/lib/couchrest/mixins/attachments.rb +0 -31
- data/lib/couchrest/mixins/attribute_protection.rb +0 -74
- data/lib/couchrest/mixins/callbacks.rb +0 -532
- data/lib/couchrest/mixins/class_proxy.rb +0 -124
- data/lib/couchrest/mixins/collection.rb +0 -260
- data/lib/couchrest/mixins/design_doc.rb +0 -103
- data/lib/couchrest/mixins/document_queries.rb +0 -80
- data/lib/couchrest/mixins/extended_attachments.rb +0 -70
- data/lib/couchrest/mixins/extended_document_mixins.rb +0 -9
- data/lib/couchrest/mixins/properties.rb +0 -158
- data/lib/couchrest/mixins/validation.rb +0 -246
- data/lib/couchrest/mixins/views.rb +0 -173
- data/lib/couchrest/more/casted_model.rb +0 -58
- data/lib/couchrest/more/extended_document.rb +0 -310
- data/lib/couchrest/more/property.rb +0 -58
- data/lib/couchrest/more/typecast.rb +0 -180
- data/lib/couchrest/support/blank.rb +0 -42
- data/lib/couchrest/support/rails.rb +0 -42
- data/lib/couchrest/validation/auto_validate.rb +0 -157
- data/lib/couchrest/validation/contextual_validators.rb +0 -78
- data/lib/couchrest/validation/validation_errors.rb +0 -125
- data/lib/couchrest/validation/validators/absent_field_validator.rb +0 -74
- data/lib/couchrest/validation/validators/confirmation_validator.rb +0 -107
- data/lib/couchrest/validation/validators/format_validator.rb +0 -122
- data/lib/couchrest/validation/validators/formats/email.rb +0 -66
- data/lib/couchrest/validation/validators/formats/url.rb +0 -43
- data/lib/couchrest/validation/validators/generic_validator.rb +0 -120
- data/lib/couchrest/validation/validators/length_validator.rb +0 -139
- data/lib/couchrest/validation/validators/method_validator.rb +0 -89
- data/lib/couchrest/validation/validators/numeric_validator.rb +0 -109
- data/lib/couchrest/validation/validators/required_field_validator.rb +0 -114
- data/spec/couchrest/more/attribute_protection_spec.rb +0 -150
- data/spec/couchrest/more/casted_extended_doc_spec.rb +0 -73
- data/spec/couchrest/more/casted_model_spec.rb +0 -406
- data/spec/couchrest/more/extended_doc_attachment_spec.rb +0 -135
- data/spec/couchrest/more/extended_doc_inherited_spec.rb +0 -40
- data/spec/couchrest/more/extended_doc_spec.rb +0 -807
- data/spec/couchrest/more/extended_doc_subclass_spec.rb +0 -98
- data/spec/couchrest/more/extended_doc_view_spec.rb +0 -456
- data/spec/couchrest/more/property_spec.rb +0 -628
- data/spec/fixtures/more/article.rb +0 -35
- data/spec/fixtures/more/card.rb +0 -22
- data/spec/fixtures/more/cat.rb +0 -20
- data/spec/fixtures/more/course.rb +0 -22
- data/spec/fixtures/more/event.rb +0 -8
- data/spec/fixtures/more/invoice.rb +0 -17
- data/spec/fixtures/more/person.rb +0 -9
- data/spec/fixtures/more/question.rb +0 -6
- data/spec/fixtures/more/service.rb +0 -12
- data/spec/fixtures/more/user.rb +0 -22
data/README.md
CHANGED
@@ -14,12 +14,17 @@ CouchRest is designed to make a simple base for application and framework-specif
|
|
14
14
|
|
15
15
|
$ sudo gem install couchrest
|
16
16
|
|
17
|
-
|
17
|
+
## Relax, it's RESTful
|
18
18
|
|
19
19
|
CouchRest rests on top of a HTTP abstraction layer using by default Heroku’s excellent REST Client Ruby HTTP wrapper.
|
20
|
-
Other adapters can be added to support more http libraries.
|
21
20
|
|
22
|
-
|
21
|
+
## Extended Document
|
22
|
+
|
23
|
+
As of May 2010 support for the popular CouchRest::ExtendedDocument mixin has been moved to its own gem: [couchrest_extended_document](http://github.com/couchrest/couchrest_extended_document).
|
24
|
+
|
25
|
+
Most people will probably want to use this library (or one of the alternatives) to make it slightly easier to access your documents.
|
26
|
+
|
27
|
+
## Running the Specs
|
23
28
|
|
24
29
|
The most complete documentation is the spec/ directory. To validate your
|
25
30
|
CouchRest install, from the project root directory run `rake`, or `autotest`
|
@@ -38,9 +43,4 @@ Please post bugs, suggestions and patches to the bug tracker at [http://github.c
|
|
38
43
|
Follow us on Twitter: [http://twitter.com/couchrest](http://twitter.com/couchrest)
|
39
44
|
|
40
45
|
Also, check [http://twitter.com/#search?q=%23couchrest](http://twitter.com/#search?q=%23couchrest)
|
41
|
-
|
42
|
-
## Ruby on Rails
|
43
46
|
|
44
|
-
CouchRest is compatible with rails and can even be used a Rails plugin.
|
45
|
-
However, you might be interested in the CouchRest companion rails project:
|
46
|
-
[http://github.com/hpoydar/couchrest-rails](http://github.com/hpoydar/couchrest-rails)
|
data/Rakefile
CHANGED
@@ -24,11 +24,10 @@ begin
|
|
24
24
|
gemspec.extra_rdoc_files = %w( README.md LICENSE THANKS.md )
|
25
25
|
gemspec.files = %w( LICENSE README.md Rakefile THANKS.md history.txt couchrest.gemspec) + Dir["{examples,lib,spec,utils}/**/*"] - Dir["spec/tmp"]
|
26
26
|
gemspec.has_rdoc = true
|
27
|
-
gemspec.add_dependency("rest-client", ">=
|
28
|
-
gemspec.add_dependency("
|
29
|
-
gemspec.add_dependency("json", "1.2.4")
|
27
|
+
gemspec.add_dependency("rest-client", ">= 1.5.1")
|
28
|
+
# gemspec.add_dependency("couchrest_extended_document", ">= 1.0.0")
|
30
29
|
gemspec.version = CouchRest::VERSION
|
31
|
-
gemspec.date =
|
30
|
+
gemspec.date = "2008-11-22"
|
32
31
|
gemspec.require_path = "lib"
|
33
32
|
end
|
34
33
|
rescue LoadError
|
data/couchrest.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{couchrest}
|
8
|
-
s.version = "0.
|
8
|
+
s.version = "1.0.0.beta"
|
9
9
|
|
10
|
-
s.required_rubygems_version = Gem::Requirement.new("
|
10
|
+
s.required_rubygems_version = Gem::Requirement.new("> 1.3.1") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["J. Chris Anderson", "Matt Aimonetti", "Marcos Tapajos", "Will Leinweber"]
|
12
|
-
s.date = %q{2010-
|
12
|
+
s.date = %q{2010-06-15}
|
13
13
|
s.description = %q{CouchRest provides a simple interface on top of CouchDB's RESTful HTTP API, as well as including some utility scripts for managing views and attachments.}
|
14
14
|
s.email = %q{jchris@apache.org}
|
15
15
|
s.extra_rdoc_files = [
|
@@ -23,7 +23,6 @@ Gem::Specification.new do |s|
|
|
23
23
|
"Rakefile",
|
24
24
|
"THANKS.md",
|
25
25
|
"couchrest.gemspec",
|
26
|
-
"examples/model/example.rb",
|
27
26
|
"examples/word_count/markov",
|
28
27
|
"examples/word_count/views/books/chunked-map.js",
|
29
28
|
"examples/word_count/views/books/united-map.js",
|
@@ -38,82 +37,29 @@ Gem::Specification.new do |s|
|
|
38
37
|
"lib/couchrest.rb",
|
39
38
|
"lib/couchrest/commands/generate.rb",
|
40
39
|
"lib/couchrest/commands/push.rb",
|
41
|
-
"lib/couchrest/
|
42
|
-
"lib/couchrest/
|
43
|
-
"lib/couchrest/
|
44
|
-
"lib/couchrest/
|
45
|
-
"lib/couchrest/core/http_abstraction.rb",
|
46
|
-
"lib/couchrest/core/response.rb",
|
47
|
-
"lib/couchrest/core/rest_api.rb",
|
48
|
-
"lib/couchrest/core/server.rb",
|
49
|
-
"lib/couchrest/core/view.rb",
|
40
|
+
"lib/couchrest/database.rb",
|
41
|
+
"lib/couchrest/design.rb",
|
42
|
+
"lib/couchrest/document.rb",
|
43
|
+
"lib/couchrest/helper/attachments.rb",
|
50
44
|
"lib/couchrest/helper/pager.rb",
|
51
45
|
"lib/couchrest/helper/streamer.rb",
|
52
46
|
"lib/couchrest/helper/upgrade.rb",
|
53
47
|
"lib/couchrest/middlewares/logger.rb",
|
54
|
-
"lib/couchrest/mixins.rb",
|
55
|
-
"lib/couchrest/mixins/attachments.rb",
|
56
|
-
"lib/couchrest/mixins/attribute_protection.rb",
|
57
|
-
"lib/couchrest/mixins/callbacks.rb",
|
58
|
-
"lib/couchrest/mixins/class_proxy.rb",
|
59
|
-
"lib/couchrest/mixins/collection.rb",
|
60
|
-
"lib/couchrest/mixins/design_doc.rb",
|
61
|
-
"lib/couchrest/mixins/document_queries.rb",
|
62
|
-
"lib/couchrest/mixins/extended_attachments.rb",
|
63
|
-
"lib/couchrest/mixins/extended_document_mixins.rb",
|
64
|
-
"lib/couchrest/mixins/properties.rb",
|
65
|
-
"lib/couchrest/mixins/validation.rb",
|
66
|
-
"lib/couchrest/mixins/views.rb",
|
67
48
|
"lib/couchrest/monkeypatches.rb",
|
68
|
-
"lib/couchrest/
|
69
|
-
"lib/couchrest/
|
70
|
-
"lib/couchrest/
|
71
|
-
"lib/couchrest/more/typecast.rb",
|
72
|
-
"lib/couchrest/support/blank.rb",
|
49
|
+
"lib/couchrest/response.rb",
|
50
|
+
"lib/couchrest/rest_api.rb",
|
51
|
+
"lib/couchrest/server.rb",
|
73
52
|
"lib/couchrest/support/class.rb",
|
74
|
-
"
|
75
|
-
"
|
76
|
-
"
|
77
|
-
"
|
78
|
-
"lib/couchrest/validation/validators/absent_field_validator.rb",
|
79
|
-
"lib/couchrest/validation/validators/confirmation_validator.rb",
|
80
|
-
"lib/couchrest/validation/validators/format_validator.rb",
|
81
|
-
"lib/couchrest/validation/validators/formats/email.rb",
|
82
|
-
"lib/couchrest/validation/validators/formats/url.rb",
|
83
|
-
"lib/couchrest/validation/validators/generic_validator.rb",
|
84
|
-
"lib/couchrest/validation/validators/length_validator.rb",
|
85
|
-
"lib/couchrest/validation/validators/method_validator.rb",
|
86
|
-
"lib/couchrest/validation/validators/numeric_validator.rb",
|
87
|
-
"lib/couchrest/validation/validators/required_field_validator.rb",
|
88
|
-
"spec/couchrest/core/couchrest_spec.rb",
|
89
|
-
"spec/couchrest/core/database_spec.rb",
|
90
|
-
"spec/couchrest/core/design_spec.rb",
|
91
|
-
"spec/couchrest/core/document_spec.rb",
|
92
|
-
"spec/couchrest/core/server_spec.rb",
|
53
|
+
"spec/couchrest/couchrest_spec.rb",
|
54
|
+
"spec/couchrest/database_spec.rb",
|
55
|
+
"spec/couchrest/design_spec.rb",
|
56
|
+
"spec/couchrest/document_spec.rb",
|
93
57
|
"spec/couchrest/helpers/pager_spec.rb",
|
94
58
|
"spec/couchrest/helpers/streamer_spec.rb",
|
95
|
-
"spec/couchrest/
|
96
|
-
"spec/couchrest/more/casted_extended_doc_spec.rb",
|
97
|
-
"spec/couchrest/more/casted_model_spec.rb",
|
98
|
-
"spec/couchrest/more/extended_doc_attachment_spec.rb",
|
99
|
-
"spec/couchrest/more/extended_doc_inherited_spec.rb",
|
100
|
-
"spec/couchrest/more/extended_doc_spec.rb",
|
101
|
-
"spec/couchrest/more/extended_doc_subclass_spec.rb",
|
102
|
-
"spec/couchrest/more/extended_doc_view_spec.rb",
|
103
|
-
"spec/couchrest/more/property_spec.rb",
|
59
|
+
"spec/couchrest/server_spec.rb",
|
104
60
|
"spec/fixtures/attachments/README",
|
105
61
|
"spec/fixtures/attachments/couchdb.png",
|
106
62
|
"spec/fixtures/attachments/test.html",
|
107
|
-
"spec/fixtures/more/article.rb",
|
108
|
-
"spec/fixtures/more/card.rb",
|
109
|
-
"spec/fixtures/more/cat.rb",
|
110
|
-
"spec/fixtures/more/course.rb",
|
111
|
-
"spec/fixtures/more/event.rb",
|
112
|
-
"spec/fixtures/more/invoice.rb",
|
113
|
-
"spec/fixtures/more/person.rb",
|
114
|
-
"spec/fixtures/more/question.rb",
|
115
|
-
"spec/fixtures/more/service.rb",
|
116
|
-
"spec/fixtures/more/user.rb",
|
117
63
|
"spec/fixtures/views/lib.js",
|
118
64
|
"spec/fixtures/views/test_view/lib.js",
|
119
65
|
"spec/fixtures/views/test_view/only-map.js",
|
@@ -127,37 +73,17 @@ Gem::Specification.new do |s|
|
|
127
73
|
s.homepage = %q{http://github.com/couchrest/couchrest}
|
128
74
|
s.rdoc_options = ["--charset=UTF-8"]
|
129
75
|
s.require_paths = ["lib"]
|
130
|
-
s.rubygems_version = %q{1.3.
|
76
|
+
s.rubygems_version = %q{1.3.6}
|
131
77
|
s.summary = %q{Lean and RESTful interface to CouchDB.}
|
132
78
|
s.test_files = [
|
133
|
-
"spec/couchrest/
|
134
|
-
"spec/couchrest/
|
135
|
-
"spec/couchrest/
|
136
|
-
"spec/couchrest/
|
137
|
-
"spec/couchrest/core/server_spec.rb",
|
79
|
+
"spec/couchrest/couchrest_spec.rb",
|
80
|
+
"spec/couchrest/database_spec.rb",
|
81
|
+
"spec/couchrest/design_spec.rb",
|
82
|
+
"spec/couchrest/document_spec.rb",
|
138
83
|
"spec/couchrest/helpers/pager_spec.rb",
|
139
84
|
"spec/couchrest/helpers/streamer_spec.rb",
|
140
|
-
"spec/couchrest/
|
141
|
-
"spec/couchrest/more/casted_extended_doc_spec.rb",
|
142
|
-
"spec/couchrest/more/casted_model_spec.rb",
|
143
|
-
"spec/couchrest/more/extended_doc_attachment_spec.rb",
|
144
|
-
"spec/couchrest/more/extended_doc_inherited_spec.rb",
|
145
|
-
"spec/couchrest/more/extended_doc_spec.rb",
|
146
|
-
"spec/couchrest/more/extended_doc_subclass_spec.rb",
|
147
|
-
"spec/couchrest/more/extended_doc_view_spec.rb",
|
148
|
-
"spec/couchrest/more/property_spec.rb",
|
149
|
-
"spec/fixtures/more/article.rb",
|
150
|
-
"spec/fixtures/more/card.rb",
|
151
|
-
"spec/fixtures/more/cat.rb",
|
152
|
-
"spec/fixtures/more/course.rb",
|
153
|
-
"spec/fixtures/more/event.rb",
|
154
|
-
"spec/fixtures/more/invoice.rb",
|
155
|
-
"spec/fixtures/more/person.rb",
|
156
|
-
"spec/fixtures/more/question.rb",
|
157
|
-
"spec/fixtures/more/service.rb",
|
158
|
-
"spec/fixtures/more/user.rb",
|
85
|
+
"spec/couchrest/server_spec.rb",
|
159
86
|
"spec/spec_helper.rb",
|
160
|
-
"examples/model/example.rb",
|
161
87
|
"examples/word_count/word_count.rb",
|
162
88
|
"examples/word_count/word_count_query.rb",
|
163
89
|
"examples/word_count/word_count_views.rb"
|
@@ -167,19 +93,13 @@ Gem::Specification.new do |s|
|
|
167
93
|
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
168
94
|
s.specification_version = 3
|
169
95
|
|
170
|
-
if Gem::Version.new(Gem::
|
171
|
-
s.add_runtime_dependency(%q<rest-client>, [">=
|
172
|
-
s.add_runtime_dependency(%q<mime-types>, [">= 1.15"])
|
173
|
-
s.add_runtime_dependency(%q<json>, ["= 1.2.4"])
|
96
|
+
if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
|
97
|
+
s.add_runtime_dependency(%q<rest-client>, [">= 1.5.1"])
|
174
98
|
else
|
175
|
-
s.add_dependency(%q<rest-client>, [">=
|
176
|
-
s.add_dependency(%q<mime-types>, [">= 1.15"])
|
177
|
-
s.add_dependency(%q<json>, ["= 1.2.4"])
|
99
|
+
s.add_dependency(%q<rest-client>, [">= 1.5.1"])
|
178
100
|
end
|
179
101
|
else
|
180
|
-
s.add_dependency(%q<rest-client>, [">=
|
181
|
-
s.add_dependency(%q<mime-types>, [">= 1.15"])
|
182
|
-
s.add_dependency(%q<json>, ["= 1.2.4"])
|
102
|
+
s.add_dependency(%q<rest-client>, [">= 1.5.1"])
|
183
103
|
end
|
184
104
|
end
|
185
105
|
|
data/history.txt
CHANGED
@@ -1,16 +1,17 @@
|
|
1
1
|
== Next Version
|
2
2
|
|
3
3
|
* Major enhancements
|
4
|
+
* Add create_target option to Database#replicate_to and #replicate_from. http://github.com/couchrest/couchrest/issues/#issue/26 (Alexander Uvarov)
|
4
5
|
|
5
6
|
* Minor enhancements
|
6
7
|
|
7
|
-
== 0.
|
8
|
+
== 1.0.0.beta
|
8
9
|
|
9
10
|
* Major enhancements
|
10
|
-
|
11
|
+
* Moved ExtendedDocument and friends into own library, couchrest_extended_document. (Sam Lown)
|
12
|
+
* Removed HttpAbstraction component for direct interface with RestClient. (Sam Lown)
|
13
|
+
* Changed version to more conventional format starting from 1.0.0 to avoid ambiguity issues with order. (Sam Lown)
|
11
14
|
|
12
|
-
* Minor enhancements
|
13
|
-
* Support for CouchDB 1.0
|
14
15
|
|
15
16
|
== 0.37
|
16
17
|
|
data/lib/couchrest.rb
CHANGED
@@ -16,40 +16,33 @@ require 'rubygems'
|
|
16
16
|
begin
|
17
17
|
require 'json'
|
18
18
|
rescue LoadError
|
19
|
-
raise "
|
19
|
+
raise "No compatible json library found, install either json or json_pure gem" unless Kernel.const_defined?("JSON")
|
20
20
|
end
|
21
21
|
require 'rest_client'
|
22
22
|
|
23
|
+
# Not sure why this is required, so removed until a reason is found!
|
23
24
|
$:.unshift File.dirname(__FILE__) unless
|
24
|
-
|
25
|
-
|
25
|
+
$:.include?(File.dirname(__FILE__)) ||
|
26
|
+
$:.include?(File.expand_path(File.dirname(__FILE__)))
|
26
27
|
|
27
28
|
require 'couchrest/monkeypatches'
|
29
|
+
require 'couchrest/rest_api'
|
28
30
|
|
29
31
|
# = CouchDB, close to the metal
|
30
32
|
module CouchRest
|
31
|
-
VERSION = '0.
|
33
|
+
VERSION = '1.0.0.beta'
|
32
34
|
|
33
|
-
autoload :Server, 'couchrest/
|
34
|
-
autoload :Database, 'couchrest/
|
35
|
-
autoload :Response, 'couchrest/
|
36
|
-
autoload :Document, 'couchrest/
|
37
|
-
autoload :Design, 'couchrest/
|
38
|
-
autoload :
|
39
|
-
autoload :Model, 'couchrest/core/model'
|
35
|
+
autoload :Server, 'couchrest/server'
|
36
|
+
autoload :Database, 'couchrest/database'
|
37
|
+
autoload :Response, 'couchrest/response'
|
38
|
+
autoload :Document, 'couchrest/document'
|
39
|
+
autoload :Design, 'couchrest/design'
|
40
|
+
autoload :Model, 'couchrest/model'
|
40
41
|
autoload :Pager, 'couchrest/helper/pager'
|
41
|
-
autoload :FileManager, 'couchrest/helper/file_manager'
|
42
42
|
autoload :Streamer, 'couchrest/helper/streamer'
|
43
|
+
autoload :Attachments, 'couchrest/helper/attachments'
|
43
44
|
autoload :Upgrade, 'couchrest/helper/upgrade'
|
44
|
-
|
45
|
-
autoload :ExtendedDocument, 'couchrest/more/extended_document'
|
46
|
-
autoload :CastedModel, 'couchrest/more/casted_model'
|
47
|
-
|
48
|
-
require File.join(File.dirname(__FILE__), 'couchrest', 'core', 'rest_api')
|
49
|
-
require File.join(File.dirname(__FILE__), 'couchrest', 'core', 'http_abstraction')
|
50
|
-
require File.join(File.dirname(__FILE__), 'couchrest', 'mixins')
|
51
|
-
require File.join(File.dirname(__FILE__), 'couchrest', 'support', 'rails') if defined?(Rails)
|
52
|
-
|
45
|
+
|
53
46
|
# we extend CouchRest with the RestAPI module which gives us acess to
|
54
47
|
# the get, post, put, delete and copy
|
55
48
|
CouchRest.extend(::RestAPI)
|
@@ -59,35 +52,6 @@ module CouchRest
|
|
59
52
|
# some helpers for tasks like instantiating a new Database or Server instance.
|
60
53
|
class << self
|
61
54
|
|
62
|
-
# extracted from Extlib
|
63
|
-
#
|
64
|
-
# Constantize tries to find a declared constant with the name specified
|
65
|
-
# in the string. It raises a NameError when the name is not in CamelCase
|
66
|
-
# or is not initialized.
|
67
|
-
#
|
68
|
-
# @example
|
69
|
-
# "Module".constantize #=> Module
|
70
|
-
# "Class".constantize #=> Class
|
71
|
-
def constantize(camel_cased_word)
|
72
|
-
unless /\A(?:::)?([A-Z]\w*(?:::[A-Z]\w*)*)\z/ =~ camel_cased_word
|
73
|
-
raise NameError, "#{camel_cased_word.inspect} is not a valid constant name!"
|
74
|
-
end
|
75
|
-
|
76
|
-
Object.module_eval("::#{$1}", __FILE__, __LINE__)
|
77
|
-
end
|
78
|
-
|
79
|
-
# extracted from Extlib
|
80
|
-
#
|
81
|
-
# Capitalizes the first word and turns underscores into spaces and strips _id.
|
82
|
-
# Like titleize, this is meant for creating pretty output.
|
83
|
-
#
|
84
|
-
# @example
|
85
|
-
# "employee_salary" #=> "Employee salary"
|
86
|
-
# "author_id" #=> "Author"
|
87
|
-
def humanize(lower_case_and_underscored_word)
|
88
|
-
lower_case_and_underscored_word.to_s.gsub(/_id$/, "").gsub(/_/, " ").capitalize
|
89
|
-
end
|
90
|
-
|
91
55
|
# todo, make this parse the url and instantiate a Server or Database instance
|
92
56
|
# depending on the specificity.
|
93
57
|
def new(*opts)
|
@@ -130,9 +94,9 @@ module CouchRest
|
|
130
94
|
|
131
95
|
# set proxy to use
|
132
96
|
def proxy url
|
133
|
-
|
97
|
+
RestClient.proxy = url
|
134
98
|
end
|
135
|
-
|
99
|
+
|
136
100
|
# ensure that a database exists
|
137
101
|
# creates it if it isn't already there
|
138
102
|
# returns it after it's been created
|
@@ -160,3 +124,18 @@ module CouchRest
|
|
160
124
|
end
|
161
125
|
end # class << self
|
162
126
|
end
|
127
|
+
|
128
|
+
# For the sake of backwards compatability, generate a dummy ExtendedDocument class
|
129
|
+
# which should be replaced by real library: couchrest_extended_document.
|
130
|
+
#
|
131
|
+
# Added 2010-05-10 by Sam Lown. Please remove at some point in the future.
|
132
|
+
#
|
133
|
+
class CouchRest::ExtendedDocument < CouchRest::Document
|
134
|
+
|
135
|
+
def self.inherited(subclass)
|
136
|
+
raise "ExtendedDocument is no longer included in CouchRest base driver, see couchrest_extended_document gem"
|
137
|
+
end
|
138
|
+
|
139
|
+
end
|
140
|
+
|
141
|
+
|
@@ -65,7 +65,7 @@ module CouchRest
|
|
65
65
|
keys = params.delete(:keys)
|
66
66
|
funcs = funcs.merge({:keys => keys}) if keys
|
67
67
|
url = CouchRest.paramify_url "#{@root}/_temp_view", params
|
68
|
-
|
68
|
+
JSON.parse(RestClient.post(url, funcs.to_json, {"Content-Type" => 'application/json'}))
|
69
69
|
end
|
70
70
|
|
71
71
|
# backwards compatibility is a plus
|
@@ -108,14 +108,14 @@ module CouchRest
|
|
108
108
|
# GET an attachment directly from CouchDB
|
109
109
|
def fetch_attachment(doc, name)
|
110
110
|
uri = url_for_attachment(doc, name)
|
111
|
-
|
111
|
+
RestClient.get uri
|
112
112
|
end
|
113
113
|
|
114
114
|
# PUT an attachment directly to CouchDB
|
115
115
|
def put_attachment(doc, name, file, options = {})
|
116
116
|
docid = escape_docid(doc['_id'])
|
117
117
|
uri = url_for_attachment(doc, name)
|
118
|
-
JSON.parse(
|
118
|
+
JSON.parse(RestClient.put(uri, file, options))
|
119
119
|
end
|
120
120
|
|
121
121
|
# DELETE an attachment directly from CouchDB
|
@@ -123,13 +123,13 @@ module CouchRest
|
|
123
123
|
uri = url_for_attachment(doc, name)
|
124
124
|
# this needs a rev
|
125
125
|
begin
|
126
|
-
|
126
|
+
JSON.parse(RestClient.delete(uri))
|
127
127
|
rescue Exception => error
|
128
128
|
if force
|
129
129
|
# get over a 409
|
130
130
|
doc = get(doc['_id'])
|
131
131
|
uri = url_for_attachment(doc, name)
|
132
|
-
|
132
|
+
JSON.parse(RestClient.delete(uri))
|
133
133
|
else
|
134
134
|
error
|
135
135
|
end
|
@@ -174,7 +174,7 @@ module CouchRest
|
|
174
174
|
uri = "#{@root}/#{slug}"
|
175
175
|
uri << "?batch=ok" if batch
|
176
176
|
CouchRest.put uri, doc
|
177
|
-
rescue
|
177
|
+
rescue RestClient::ResourceNotFound
|
178
178
|
p "resource not found when saving even tho an id was passed"
|
179
179
|
slug = doc['_id'] = @server.next_uuid
|
180
180
|
CouchRest.put "#{@root}/#{slug}", doc
|
@@ -316,7 +316,6 @@ module CouchRest
|
|
316
316
|
# DELETE the database itself. This is not undoable and could be rather
|
317
317
|
# catastrophic. Use with care!
|
318
318
|
def delete!
|
319
|
-
clear_extended_doc_fresh_cache
|
320
319
|
CouchRest.delete @root
|
321
320
|
end
|
322
321
|
|
@@ -334,10 +333,6 @@ module CouchRest
|
|
334
333
|
payload[:continuous] = continuous
|
335
334
|
CouchRest.post "#{@host}/_replicate", payload
|
336
335
|
end
|
337
|
-
|
338
|
-
def clear_extended_doc_fresh_cache
|
339
|
-
::CouchRest::ExtendedDocument.subclasses.each{|klass| klass.design_doc_fresh = false if klass.respond_to?(:design_doc_fresh=) }
|
340
|
-
end
|
341
336
|
|
342
337
|
def uri_for_attachment(doc, name)
|
343
338
|
if doc.is_a?(String)
|
@@ -67,7 +67,7 @@ JAVASCRIPT
|
|
67
67
|
def has_view?(view)
|
68
68
|
view = view.to_s
|
69
69
|
self['views'][view] &&
|
70
|
-
(self['views'][view]["couchrest-defaults"]||{})
|
70
|
+
(self['views'][view]["couchrest-defaults"] || {})
|
71
71
|
end
|
72
72
|
|
73
73
|
def fetch_view view_name, opts, &block
|
@@ -76,4 +76,4 @@ JAVASCRIPT
|
|
76
76
|
|
77
77
|
end
|
78
78
|
|
79
|
-
end
|
79
|
+
end
|