couchrest 0.33 → 0.34

Sign up to get free protection for your applications and to get access to all the features.
Files changed (45) hide show
  1. data/README.md +8 -127
  2. data/Rakefile +20 -36
  3. data/THANKS.md +2 -1
  4. data/history.txt +25 -0
  5. data/lib/couchrest.rb +5 -4
  6. data/lib/couchrest/core/database.rb +26 -21
  7. data/lib/couchrest/core/document.rb +4 -3
  8. data/lib/couchrest/helper/streamer.rb +11 -4
  9. data/lib/couchrest/mixins/attribute_protection.rb +74 -0
  10. data/lib/couchrest/mixins/callbacks.rb +187 -138
  11. data/lib/couchrest/mixins/collection.rb +3 -16
  12. data/lib/couchrest/mixins/extended_attachments.rb +1 -1
  13. data/lib/couchrest/mixins/extended_document_mixins.rb +1 -0
  14. data/lib/couchrest/mixins/properties.rb +71 -44
  15. data/lib/couchrest/mixins/validation.rb +18 -29
  16. data/lib/couchrest/more/casted_model.rb +29 -1
  17. data/lib/couchrest/more/extended_document.rb +73 -25
  18. data/lib/couchrest/more/property.rb +20 -1
  19. data/lib/couchrest/support/class.rb +81 -67
  20. data/lib/couchrest/support/rails.rb +12 -5
  21. data/lib/couchrest/validation/auto_validate.rb +5 -9
  22. data/lib/couchrest/validation/validators/confirmation_validator.rb +11 -3
  23. data/lib/couchrest/validation/validators/format_validator.rb +8 -3
  24. data/lib/couchrest/validation/validators/length_validator.rb +10 -5
  25. data/lib/couchrest/validation/validators/numeric_validator.rb +6 -1
  26. data/lib/couchrest/validation/validators/required_field_validator.rb +8 -3
  27. data/spec/couchrest/core/couchrest_spec.rb +48 -2
  28. data/spec/couchrest/core/database_spec.rb +22 -10
  29. data/spec/couchrest/core/document_spec.rb +9 -1
  30. data/spec/couchrest/helpers/streamer_spec.rb +31 -2
  31. data/spec/couchrest/more/attribute_protection_spec.rb +94 -0
  32. data/spec/couchrest/more/casted_extended_doc_spec.rb +2 -4
  33. data/spec/couchrest/more/casted_model_spec.rb +230 -1
  34. data/spec/couchrest/more/extended_doc_attachment_spec.rb +2 -2
  35. data/spec/couchrest/more/extended_doc_spec.rb +173 -15
  36. data/spec/couchrest/more/extended_doc_view_spec.rb +17 -10
  37. data/spec/couchrest/more/property_spec.rb +97 -3
  38. data/spec/fixtures/more/article.rb +4 -3
  39. data/spec/fixtures/more/card.rb +1 -1
  40. data/spec/fixtures/more/cat.rb +5 -3
  41. data/spec/fixtures/more/event.rb +4 -1
  42. data/spec/fixtures/more/invoice.rb +2 -2
  43. data/spec/fixtures/more/person.rb +1 -0
  44. data/spec/fixtures/more/user.rb +22 -0
  45. metadata +46 -13
@@ -2,6 +2,7 @@ class Article < CouchRest::ExtendedDocument
2
2
  use_database DB
3
3
  unique_id :slug
4
4
 
5
+ provides_collection :article_details, 'Article', 'by_date', :descending => true, :include_docs => true
5
6
  view_by :date, :descending => true
6
7
  view_by :user_id, :date
7
8
 
@@ -26,9 +27,9 @@ class Article < CouchRest::ExtendedDocument
26
27
 
27
28
  timestamps!
28
29
 
29
- save_callback :before, :generate_slug_from_title
30
+ before_save :generate_slug_from_title
30
31
 
31
32
  def generate_slug_from_title
32
- self['slug'] = title.downcase.gsub(/[^a-z0-9]/,'-').squeeze('-').gsub(/^\-|\-$/,'') if new_document?
33
+ self['slug'] = title.downcase.gsub(/[^a-z0-9]/,'-').squeeze('-').gsub(/^\-|\-$/,'') if new?
33
34
  end
34
- end
35
+ end
@@ -17,6 +17,6 @@ class Card < CouchRest::ExtendedDocument
17
17
  timestamps!
18
18
 
19
19
  # Validation
20
- validates_present :first_name
20
+ validates_presence_of :first_name
21
21
 
22
22
  end
@@ -4,8 +4,10 @@ class Cat < CouchRest::ExtendedDocument
4
4
  # Set the default database to use
5
5
  use_database DB
6
6
 
7
- property :name
8
- property :toys, :cast_as => ['CatToy'], :default => []
7
+ property :name, :accessible => true
8
+ property :toys, :cast_as => ['CatToy'], :default => [], :accessible => true
9
+ property :favorite_toy, :cast_as => 'CatToy', :accessible => true
10
+ property :number
9
11
  end
10
12
 
11
13
  class CatToy < Hash
@@ -14,5 +16,5 @@ class CatToy < Hash
14
16
 
15
17
  property :name
16
18
 
17
- validates_present :name
19
+ validates_presence_of :name
18
20
  end
@@ -2,5 +2,8 @@ class Event < CouchRest::ExtendedDocument
2
2
  use_database DB
3
3
 
4
4
  property :subject
5
- property :occurs_at, :cast_as => 'Time', :send => 'parse'
5
+ property :occurs_at, :cast_as => 'Time', :init_method => 'parse'
6
+ property :end_date, :cast_as => 'Date', :init_method => 'parse'
7
+
8
+
6
9
  end
@@ -11,7 +11,7 @@ class Invoice < CouchRest::ExtendedDocument
11
11
  property :location
12
12
 
13
13
  # Validation
14
- validates_present :client_name, :employee_name
15
- validates_present :location, :message => "Hey stupid!, you forgot the location"
14
+ validates_presence_of :client_name, :employee_name
15
+ validates_presence_of :location, :message => "Hey stupid!, you forgot the location"
16
16
 
17
17
  end
@@ -1,6 +1,7 @@
1
1
  class Person < Hash
2
2
  include ::CouchRest::CastedModel
3
3
  property :name
4
+ property :pet, :cast_as => 'Cat'
4
5
 
5
6
  def last_name
6
7
  name.last
@@ -0,0 +1,22 @@
1
+ class User < CouchRest::ExtendedDocument
2
+ # Set the default database to use
3
+ use_database DB
4
+ property :name, :accessible => true
5
+ property :admin # this will be automatically protected
6
+ end
7
+
8
+ class SpecialUser < CouchRest::ExtendedDocument
9
+ # Set the default database to use
10
+ use_database DB
11
+ property :name # this will not be protected
12
+ property :admin, :protected => true
13
+ end
14
+
15
+ # There are two modes of protection
16
+ # 1) Declare accessible poperties, assume all the rest are protected
17
+ # property :name, :accessible => true
18
+ # property :admin # this will be automatically protected
19
+ #
20
+ # 2) Declare protected properties, assume all the rest are accessible
21
+ # property :name # this will not be protected
22
+ # property :admin, :protected => true
metadata CHANGED
@@ -1,16 +1,17 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: couchrest
3
3
  version: !ruby/object:Gem::Version
4
- version: "0.33"
4
+ version: "0.34"
5
5
  platform: ruby
6
6
  authors:
7
7
  - J. Chris Anderson
8
8
  - Matt Aimonetti
9
+ - Marcos Tapajos
9
10
  autorequire:
10
11
  bindir: bin
11
12
  cert_chain: []
12
13
 
13
- date: 2008-11-22 00:00:00 -08:00
14
+ date: 2010-01-14 00:00:00 -02:00
14
15
  default_executable:
15
16
  dependencies:
16
17
  - !ruby/object:Gem::Dependency
@@ -40,15 +41,14 @@ executables: []
40
41
  extensions: []
41
42
 
42
43
  extra_rdoc_files:
43
- - README.md
44
44
  - LICENSE
45
+ - README.md
45
46
  - THANKS.md
46
47
  files:
47
48
  - LICENSE
48
49
  - README.md
49
50
  - Rakefile
50
51
  - THANKS.md
51
- - history.txt
52
52
  - examples/model/example.rb
53
53
  - examples/word_count/markov
54
54
  - examples/word_count/views/books/chunked-map.js
@@ -60,6 +60,8 @@ files:
60
60
  - examples/word_count/word_count.rb
61
61
  - examples/word_count/word_count_query.rb
62
62
  - examples/word_count/word_count_views.rb
63
+ - history.txt
64
+ - lib/couchrest.rb
63
65
  - lib/couchrest/commands/generate.rb
64
66
  - lib/couchrest/commands/push.rb
65
67
  - lib/couchrest/core/adapters/restclient.rb
@@ -75,7 +77,9 @@ files:
75
77
  - lib/couchrest/helper/streamer.rb
76
78
  - lib/couchrest/helper/upgrade.rb
77
79
  - lib/couchrest/middlewares/logger.rb
80
+ - lib/couchrest/mixins.rb
78
81
  - lib/couchrest/mixins/attachments.rb
82
+ - lib/couchrest/mixins/attribute_protection.rb
79
83
  - lib/couchrest/mixins/callbacks.rb
80
84
  - lib/couchrest/mixins/class_proxy.rb
81
85
  - lib/couchrest/mixins/collection.rb
@@ -86,7 +90,6 @@ files:
86
90
  - lib/couchrest/mixins/properties.rb
87
91
  - lib/couchrest/mixins/validation.rb
88
92
  - lib/couchrest/mixins/views.rb
89
- - lib/couchrest/mixins.rb
90
93
  - lib/couchrest/monkeypatches.rb
91
94
  - lib/couchrest/more/casted_model.rb
92
95
  - lib/couchrest/more/extended_document.rb
@@ -107,7 +110,6 @@ files:
107
110
  - lib/couchrest/validation/validators/method_validator.rb
108
111
  - lib/couchrest/validation/validators/numeric_validator.rb
109
112
  - lib/couchrest/validation/validators/required_field_validator.rb
110
- - lib/couchrest.rb
111
113
  - spec/couchrest/core/couchrest_spec.rb
112
114
  - spec/couchrest/core/database_spec.rb
113
115
  - spec/couchrest/core/design_spec.rb
@@ -115,6 +117,7 @@ files:
115
117
  - spec/couchrest/core/server_spec.rb
116
118
  - spec/couchrest/helpers/pager_spec.rb
117
119
  - spec/couchrest/helpers/streamer_spec.rb
120
+ - spec/couchrest/more/attribute_protection_spec.rb
118
121
  - spec/couchrest/more/casted_extended_doc_spec.rb
119
122
  - spec/couchrest/more/casted_model_spec.rb
120
123
  - spec/couchrest/more/extended_doc_attachment_spec.rb
@@ -122,8 +125,8 @@ files:
122
125
  - spec/couchrest/more/extended_doc_subclass_spec.rb
123
126
  - spec/couchrest/more/extended_doc_view_spec.rb
124
127
  - spec/couchrest/more/property_spec.rb
125
- - spec/fixtures/attachments/couchdb.png
126
128
  - spec/fixtures/attachments/README
129
+ - spec/fixtures/attachments/couchdb.png
127
130
  - spec/fixtures/attachments/test.html
128
131
  - spec/fixtures/more/article.rb
129
132
  - spec/fixtures/more/card.rb
@@ -134,6 +137,7 @@ files:
134
137
  - spec/fixtures/more/person.rb
135
138
  - spec/fixtures/more/question.rb
136
139
  - spec/fixtures/more/service.rb
140
+ - spec/fixtures/more/user.rb
137
141
  - spec/fixtures/views/lib.js
138
142
  - spec/fixtures/views/test_view/lib.js
139
143
  - spec/fixtures/views/test_view/only-map.js
@@ -144,12 +148,12 @@ files:
144
148
  - utils/remap.rb
145
149
  - utils/subset.rb
146
150
  has_rdoc: true
147
- homepage: http://github.com/jchris/couchrest
151
+ homepage: http://github.com/couchrest/couchrest
148
152
  licenses: []
149
153
 
150
154
  post_install_message:
151
- rdoc_options: []
152
-
155
+ rdoc_options:
156
+ - --charset=UTF-8
153
157
  require_paths:
154
158
  - lib
155
159
  required_ruby_version: !ruby/object:Gem::Requirement
@@ -167,9 +171,38 @@ required_rubygems_version: !ruby/object:Gem::Requirement
167
171
  requirements: []
168
172
 
169
173
  rubyforge_project:
170
- rubygems_version: 1.3.4
174
+ rubygems_version: 1.3.5
171
175
  signing_key:
172
176
  specification_version: 3
173
177
  summary: Lean and RESTful interface to CouchDB.
174
- test_files: []
175
-
178
+ test_files:
179
+ - spec/couchrest/core/couchrest_spec.rb
180
+ - spec/couchrest/core/database_spec.rb
181
+ - spec/couchrest/core/design_spec.rb
182
+ - spec/couchrest/core/document_spec.rb
183
+ - spec/couchrest/core/server_spec.rb
184
+ - spec/couchrest/helpers/pager_spec.rb
185
+ - spec/couchrest/helpers/streamer_spec.rb
186
+ - spec/couchrest/more/attribute_protection_spec.rb
187
+ - spec/couchrest/more/casted_extended_doc_spec.rb
188
+ - spec/couchrest/more/casted_model_spec.rb
189
+ - spec/couchrest/more/extended_doc_attachment_spec.rb
190
+ - spec/couchrest/more/extended_doc_spec.rb
191
+ - spec/couchrest/more/extended_doc_subclass_spec.rb
192
+ - spec/couchrest/more/extended_doc_view_spec.rb
193
+ - spec/couchrest/more/property_spec.rb
194
+ - spec/fixtures/more/article.rb
195
+ - spec/fixtures/more/card.rb
196
+ - spec/fixtures/more/cat.rb
197
+ - spec/fixtures/more/course.rb
198
+ - spec/fixtures/more/event.rb
199
+ - spec/fixtures/more/invoice.rb
200
+ - spec/fixtures/more/person.rb
201
+ - spec/fixtures/more/question.rb
202
+ - spec/fixtures/more/service.rb
203
+ - spec/fixtures/more/user.rb
204
+ - spec/spec_helper.rb
205
+ - examples/model/example.rb
206
+ - examples/word_count/word_count.rb
207
+ - examples/word_count/word_count_query.rb
208
+ - examples/word_count/word_count_views.rb