couchrest 0.38 → 1.0.0.beta

Sign up to get free protection for your applications and to get access to all the features.
Files changed (77) hide show
  1. data/README.md +8 -8
  2. data/Rakefile +3 -4
  3. data/couchrest.gemspec +25 -105
  4. data/history.txt +5 -4
  5. data/lib/couchrest.rb +31 -52
  6. data/lib/couchrest/{core/database.rb → database.rb} +6 -11
  7. data/lib/couchrest/{core/design.rb → design.rb} +2 -2
  8. data/lib/couchrest/{core/document.rb → document.rb} +1 -1
  9. data/lib/couchrest/helper/attachments.rb +29 -0
  10. data/lib/couchrest/middlewares/logger.rb +3 -3
  11. data/lib/couchrest/monkeypatches.rb +1 -71
  12. data/lib/couchrest/{core/response.rb → response.rb} +0 -0
  13. data/lib/couchrest/{core/rest_api.rb → rest_api.rb} +8 -12
  14. data/lib/couchrest/{core/server.rb → server.rb} +0 -2
  15. data/spec/couchrest/{core/couchrest_spec.rb → couchrest_spec.rb} +15 -9
  16. data/spec/couchrest/{core/database_spec.rb → database_spec.rb} +4 -4
  17. data/spec/couchrest/{core/design_spec.rb → design_spec.rb} +2 -2
  18. data/spec/couchrest/{core/document_spec.rb → document_spec.rb} +1 -1
  19. data/spec/couchrest/{core/server_spec.rb → server_spec.rb} +2 -2
  20. data/spec/spec.opts +0 -1
  21. data/spec/spec_helper.rb +0 -4
  22. metadata +32 -133
  23. data/examples/model/example.rb +0 -144
  24. data/lib/couchrest/core/adapters/restclient.rb +0 -35
  25. data/lib/couchrest/core/http_abstraction.rb +0 -48
  26. data/lib/couchrest/core/view.rb +0 -4
  27. data/lib/couchrest/mixins.rb +0 -4
  28. data/lib/couchrest/mixins/attachments.rb +0 -31
  29. data/lib/couchrest/mixins/attribute_protection.rb +0 -74
  30. data/lib/couchrest/mixins/callbacks.rb +0 -532
  31. data/lib/couchrest/mixins/class_proxy.rb +0 -124
  32. data/lib/couchrest/mixins/collection.rb +0 -260
  33. data/lib/couchrest/mixins/design_doc.rb +0 -103
  34. data/lib/couchrest/mixins/document_queries.rb +0 -80
  35. data/lib/couchrest/mixins/extended_attachments.rb +0 -70
  36. data/lib/couchrest/mixins/extended_document_mixins.rb +0 -9
  37. data/lib/couchrest/mixins/properties.rb +0 -158
  38. data/lib/couchrest/mixins/validation.rb +0 -246
  39. data/lib/couchrest/mixins/views.rb +0 -173
  40. data/lib/couchrest/more/casted_model.rb +0 -58
  41. data/lib/couchrest/more/extended_document.rb +0 -310
  42. data/lib/couchrest/more/property.rb +0 -58
  43. data/lib/couchrest/more/typecast.rb +0 -180
  44. data/lib/couchrest/support/blank.rb +0 -42
  45. data/lib/couchrest/support/rails.rb +0 -42
  46. data/lib/couchrest/validation/auto_validate.rb +0 -157
  47. data/lib/couchrest/validation/contextual_validators.rb +0 -78
  48. data/lib/couchrest/validation/validation_errors.rb +0 -125
  49. data/lib/couchrest/validation/validators/absent_field_validator.rb +0 -74
  50. data/lib/couchrest/validation/validators/confirmation_validator.rb +0 -107
  51. data/lib/couchrest/validation/validators/format_validator.rb +0 -122
  52. data/lib/couchrest/validation/validators/formats/email.rb +0 -66
  53. data/lib/couchrest/validation/validators/formats/url.rb +0 -43
  54. data/lib/couchrest/validation/validators/generic_validator.rb +0 -120
  55. data/lib/couchrest/validation/validators/length_validator.rb +0 -139
  56. data/lib/couchrest/validation/validators/method_validator.rb +0 -89
  57. data/lib/couchrest/validation/validators/numeric_validator.rb +0 -109
  58. data/lib/couchrest/validation/validators/required_field_validator.rb +0 -114
  59. data/spec/couchrest/more/attribute_protection_spec.rb +0 -150
  60. data/spec/couchrest/more/casted_extended_doc_spec.rb +0 -73
  61. data/spec/couchrest/more/casted_model_spec.rb +0 -406
  62. data/spec/couchrest/more/extended_doc_attachment_spec.rb +0 -135
  63. data/spec/couchrest/more/extended_doc_inherited_spec.rb +0 -40
  64. data/spec/couchrest/more/extended_doc_spec.rb +0 -807
  65. data/spec/couchrest/more/extended_doc_subclass_spec.rb +0 -98
  66. data/spec/couchrest/more/extended_doc_view_spec.rb +0 -456
  67. data/spec/couchrest/more/property_spec.rb +0 -628
  68. data/spec/fixtures/more/article.rb +0 -35
  69. data/spec/fixtures/more/card.rb +0 -22
  70. data/spec/fixtures/more/cat.rb +0 -20
  71. data/spec/fixtures/more/course.rb +0 -22
  72. data/spec/fixtures/more/event.rb +0 -8
  73. data/spec/fixtures/more/invoice.rb +0 -17
  74. data/spec/fixtures/more/person.rb +0 -9
  75. data/spec/fixtures/more/question.rb +0 -6
  76. data/spec/fixtures/more/service.rb +0 -12
  77. data/spec/fixtures/more/user.rb +0 -22
@@ -1,35 +0,0 @@
1
- class Article < CouchRest::ExtendedDocument
2
- use_database DB
3
- unique_id :slug
4
-
5
- provides_collection :article_details, 'Article', 'by_date', :descending => true, :include_docs => true
6
- view_by :date, :descending => true
7
- view_by :user_id, :date
8
-
9
- view_by :tags,
10
- :map =>
11
- "function(doc) {
12
- if (doc['couchrest-type'] == 'Article' && doc.tags) {
13
- doc.tags.forEach(function(tag){
14
- emit(tag, 1);
15
- });
16
- }
17
- }",
18
- :reduce =>
19
- "function(keys, values, rereduce) {
20
- return sum(values);
21
- }"
22
-
23
- property :date, :type => 'Date'
24
- property :slug, :read_only => true
25
- property :title
26
- property :tags, :type => ['String']
27
-
28
- timestamps!
29
-
30
- before_save :generate_slug_from_title
31
-
32
- def generate_slug_from_title
33
- self['slug'] = title.downcase.gsub(/[^a-z0-9]/,'-').squeeze('-').gsub(/^\-|\-$/,'') if new?
34
- end
35
- end
@@ -1,22 +0,0 @@
1
- class Card < CouchRest::ExtendedDocument
2
- # Include the validation module to get access to the validation methods
3
- include CouchRest::Validation
4
- # set the auto_validation before defining the properties
5
- auto_validate!
6
-
7
- # Set the default database to use
8
- use_database DB
9
-
10
- # Official Schema
11
- property :first_name
12
- property :last_name, :alias => :family_name
13
- property :read_only_value, :read_only => true
14
- property :cast_alias, :cast_as => 'Person', :alias => :calias
15
-
16
-
17
- timestamps!
18
-
19
- # Validation
20
- validates_presence_of :first_name
21
-
22
- end
@@ -1,20 +0,0 @@
1
- class Cat < CouchRest::ExtendedDocument
2
- include ::CouchRest::Validation
3
-
4
- # Set the default database to use
5
- use_database DB
6
-
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
11
- end
12
-
13
- class CatToy < Hash
14
- include ::CouchRest::CastedModel
15
- include ::CouchRest::Validation
16
-
17
- property :name
18
-
19
- validates_presence_of :name
20
- end
@@ -1,22 +0,0 @@
1
- require File.join(FIXTURE_PATH, 'more', 'question')
2
- require File.join(FIXTURE_PATH, 'more', 'person')
3
-
4
- class Course < CouchRest::ExtendedDocument
5
- use_database TEST_SERVER.default_database
6
-
7
- property :title, :cast_as => 'String'
8
- property :questions, :cast_as => ['Question']
9
- property :professor, :cast_as => 'Person'
10
- property :participants, :type => ['Object']
11
- property :ends_at, :type => 'Time'
12
- property :estimate, :type => 'Float'
13
- property :hours, :type => 'Integer'
14
- property :profit, :type => 'BigDecimal'
15
- property :started_on, :type => 'Date'
16
- property :updated_at, :type => 'DateTime'
17
- property :active, :type => 'Boolean'
18
- property :klass, :type => 'Class'
19
-
20
- view_by :title
21
- view_by :dept, :ducktype => true
22
- end
@@ -1,8 +0,0 @@
1
- class Event < CouchRest::ExtendedDocument
2
- use_database DB
3
-
4
- property :subject
5
- property :occurs_at, :cast_as => 'Time', :init_method => 'parse'
6
- property :end_date, :cast_as => 'Date', :init_method => 'parse'
7
-
8
- end
@@ -1,17 +0,0 @@
1
- class Invoice < CouchRest::ExtendedDocument
2
- # Include the validation module to get access to the validation methods
3
- include CouchRest::Validation
4
-
5
- # Set the default database to use
6
- use_database DB
7
-
8
- # Official Schema
9
- property :client_name
10
- property :employee_name
11
- property :location
12
-
13
- # Validation
14
- validates_presence_of :client_name, :employee_name
15
- validates_presence_of :location, :message => "Hey stupid!, you forgot the location"
16
-
17
- end
@@ -1,9 +0,0 @@
1
- class Person < Hash
2
- include ::CouchRest::CastedModel
3
- property :pet, :cast_as => 'Cat'
4
- property :name, :type => ['String']
5
-
6
- def last_name
7
- name.last
8
- end
9
- end
@@ -1,6 +0,0 @@
1
- class Question < Hash
2
- include ::CouchRest::CastedModel
3
-
4
- property :q
5
- property :a, :type => 'Object'
6
- end
@@ -1,12 +0,0 @@
1
- class Service < CouchRest::ExtendedDocument
2
- # Include the validation module to get access to the validation methods
3
- include CouchRest::Validation
4
- auto_validate!
5
- # Set the default database to use
6
- use_database DB
7
-
8
- # Official Schema
9
- property :name, :length => 4...20
10
- property :price, :type => 'Integer'
11
-
12
- end
@@ -1,22 +0,0 @@
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