couch_potato-rails2 0.5.6

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.
Files changed (88) hide show
  1. data/.gitignore +7 -0
  2. data/.travis.yml +5 -0
  3. data/CHANGES.md +148 -0
  4. data/CREDITS +6 -0
  5. data/Gemfile +4 -0
  6. data/MIT-LICENSE.txt +19 -0
  7. data/README.md +450 -0
  8. data/Rakefile +82 -0
  9. data/couch_potato.gemspec +27 -0
  10. data/init.rb +3 -0
  11. data/lib/core_ext/date.rb +14 -0
  12. data/lib/core_ext/object.rb +5 -0
  13. data/lib/core_ext/string.rb +12 -0
  14. data/lib/core_ext/symbol.rb +15 -0
  15. data/lib/core_ext/time.rb +23 -0
  16. data/lib/couch_potato.rb +48 -0
  17. data/lib/couch_potato/database.rb +179 -0
  18. data/lib/couch_potato/persistence.rb +124 -0
  19. data/lib/couch_potato/persistence/active_model_compliance.rb +44 -0
  20. data/lib/couch_potato/persistence/attachments.rb +31 -0
  21. data/lib/couch_potato/persistence/callbacks.rb +29 -0
  22. data/lib/couch_potato/persistence/dirty_attributes.rb +56 -0
  23. data/lib/couch_potato/persistence/ghost_attributes.rb +12 -0
  24. data/lib/couch_potato/persistence/json.rb +47 -0
  25. data/lib/couch_potato/persistence/magic_timestamps.rb +23 -0
  26. data/lib/couch_potato/persistence/properties.rb +79 -0
  27. data/lib/couch_potato/persistence/simple_property.rb +82 -0
  28. data/lib/couch_potato/persistence/type_caster.rb +40 -0
  29. data/lib/couch_potato/railtie.rb +25 -0
  30. data/lib/couch_potato/rspec.rb +2 -0
  31. data/lib/couch_potato/rspec/matchers.rb +39 -0
  32. data/lib/couch_potato/rspec/matchers/json2.js +482 -0
  33. data/lib/couch_potato/rspec/matchers/list_as_matcher.rb +54 -0
  34. data/lib/couch_potato/rspec/matchers/map_to_matcher.rb +49 -0
  35. data/lib/couch_potato/rspec/matchers/print_r.js +60 -0
  36. data/lib/couch_potato/rspec/matchers/reduce_to_matcher.rb +50 -0
  37. data/lib/couch_potato/rspec/stub_db.rb +46 -0
  38. data/lib/couch_potato/validation.rb +16 -0
  39. data/lib/couch_potato/validation/with_active_model.rb +27 -0
  40. data/lib/couch_potato/validation/with_validatable.rb +41 -0
  41. data/lib/couch_potato/version.rb +3 -0
  42. data/lib/couch_potato/view/base_view_spec.rb +84 -0
  43. data/lib/couch_potato/view/custom_view_spec.rb +42 -0
  44. data/lib/couch_potato/view/custom_views.rb +52 -0
  45. data/lib/couch_potato/view/lists.rb +23 -0
  46. data/lib/couch_potato/view/model_view_spec.rb +75 -0
  47. data/lib/couch_potato/view/properties_view_spec.rb +47 -0
  48. data/lib/couch_potato/view/raw_view_spec.rb +25 -0
  49. data/lib/couch_potato/view/view_query.rb +82 -0
  50. data/rails/init.rb +4 -0
  51. data/rails/reload_classes.rb +47 -0
  52. data/spec/attachments_spec.rb +23 -0
  53. data/spec/callbacks_spec.rb +297 -0
  54. data/spec/create_spec.rb +35 -0
  55. data/spec/custom_view_spec.rb +239 -0
  56. data/spec/default_property_spec.rb +38 -0
  57. data/spec/destroy_spec.rb +29 -0
  58. data/spec/fixtures/address.rb +10 -0
  59. data/spec/fixtures/person.rb +6 -0
  60. data/spec/property_spec.rb +323 -0
  61. data/spec/rails_spec.rb +50 -0
  62. data/spec/railtie_spec.rb +65 -0
  63. data/spec/spec.opts +2 -0
  64. data/spec/spec_helper.rb +44 -0
  65. data/spec/unit/active_model_compliance_spec.rb +98 -0
  66. data/spec/unit/attributes_spec.rb +135 -0
  67. data/spec/unit/base_view_spec_spec.rb +106 -0
  68. data/spec/unit/callbacks_spec.rb +46 -0
  69. data/spec/unit/couch_potato_spec.rb +39 -0
  70. data/spec/unit/create_spec.rb +69 -0
  71. data/spec/unit/custom_views_spec.rb +15 -0
  72. data/spec/unit/database_spec.rb +317 -0
  73. data/spec/unit/date_spec.rb +22 -0
  74. data/spec/unit/dirty_attributes_spec.rb +136 -0
  75. data/spec/unit/initialize_spec.rb +38 -0
  76. data/spec/unit/json_spec.rb +30 -0
  77. data/spec/unit/lists_spec.rb +20 -0
  78. data/spec/unit/model_view_spec_spec.rb +13 -0
  79. data/spec/unit/properties_view_spec_spec.rb +31 -0
  80. data/spec/unit/rspec_matchers_spec.rb +124 -0
  81. data/spec/unit/rspec_stub_db_spec.rb +35 -0
  82. data/spec/unit/string_spec.rb +7 -0
  83. data/spec/unit/time_spec.rb +15 -0
  84. data/spec/unit/validation_spec.rb +67 -0
  85. data/spec/unit/view_query_spec.rb +86 -0
  86. data/spec/update_spec.rb +40 -0
  87. data/spec/view_updates_spec.rb +28 -0
  88. metadata +243 -0
@@ -0,0 +1,7 @@
1
+ require 'spec_helper'
2
+
3
+ describe String, 'camelize' do
4
+ it "should camelize a string" do
5
+ 'my_string'.camelize.should == 'MyString'
6
+ end
7
+ end
@@ -0,0 +1,15 @@
1
+ require 'spec_helper'
2
+
3
+ describe Time, 'to_json' do
4
+ it "should convert to utc and format the time in a way that i can use it for sorting in couchdb" do
5
+ time = Time.parse('2009-01-01 11:12:23 +0200')
6
+ time.to_json.should == "\"2009/01/01 09:12:23 +0000\""
7
+ end
8
+ end
9
+
10
+ describe Time, 'as_json' do
11
+ it "should format it in the same way as to_json does so i can use this to do queries over time attributes" do
12
+ time = Time.parse('2009-01-01 11:12:23 +0200')
13
+ time.as_json.should == "2009/01/01 09:12:23 +0000"
14
+ end
15
+ end
@@ -0,0 +1,67 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'CouchPotato::Config.validation_framework' do
4
+ before(:each) do
5
+ @original_validation_framework = CouchPotato::Config.validation_framework
6
+ end
7
+ after(:each) do
8
+ CouchPotato::Config.validation_framework = @original_validation_framework
9
+ end
10
+
11
+ describe "access to errors object" do
12
+ it "should description" do
13
+ model_class = Class.new
14
+ model_class.send(:include, CouchPotato::Persistence)
15
+ model_class.new.errors.should respond_to(:errors)
16
+ end
17
+ end
18
+
19
+ begin
20
+ require 'active_model'
21
+
22
+ describe 'with :active_model' do
23
+ before(:each) do
24
+ CouchPotato::Config.validation_framework = :active_model
25
+ end
26
+
27
+ it "should include ActiveModel::Validations upon inclusion of CouchPotato::Persistence" do
28
+ model_class = Class.new
29
+ ActiveModel::Validations.should_receive(:included).with(model_class)
30
+ model_class.send(:include, CouchPotato::Persistence)
31
+ end
32
+ end
33
+
34
+ rescue LoadError
35
+ STDERR.puts "WARNING: active_model gem not installed. Not running ActiveModel validation specs."
36
+ end
37
+
38
+ begin
39
+ require 'validatable'
40
+
41
+ describe 'with :validatable' do
42
+ before(:each) do
43
+ CouchPotato::Config.validation_framework = :validatable
44
+ end
45
+
46
+ it "should include ActiveModel::Validations upon inclusion of CouchPotato::Persistence" do
47
+ model_class = Class.new
48
+ Validatable.should_receive(:included).with(model_class)
49
+ model_class.send(:include, CouchPotato::Persistence)
50
+ end
51
+ end
52
+
53
+ rescue LoadError
54
+ STDERR.puts "WARNING: validatable gem not installed. Not running Validatable validation specs."
55
+ end
56
+
57
+ describe 'with an unknown framework' do
58
+ before(:each) do
59
+ CouchPotato::Config.validation_framework = :unknown_validation_framework
60
+ end
61
+
62
+ it "should raise an error" do
63
+ model_class = Class.new
64
+ lambda { model_class.send(:include, CouchPotato::Persistence) }.should raise_error
65
+ end
66
+ end
67
+ end
@@ -0,0 +1,86 @@
1
+ require 'spec_helper'
2
+
3
+ describe CouchPotato::View::ViewQuery, 'query_view!' do
4
+ before(:each) do
5
+ CouchRest.stub(:get => nil)
6
+ end
7
+
8
+ it "should not pass a key if conditions are empty" do
9
+ db = mock 'db', :get => nil, :save_doc => nil
10
+ db.should_receive(:view).with(anything, {})
11
+ CouchPotato::View::ViewQuery.new(db, '', {:view0 => {}}).query_view!
12
+ end
13
+
14
+ it "should not update a view when the map/reduce functions haven't changed" do
15
+ db = mock 'db', :get => {'views' => {'view' => {'map' => '<map_code>', 'reduce' => '<reduce_code>'}}}, :view => nil
16
+ db.should_not_receive(:save_doc)
17
+ CouchPotato::View::ViewQuery.new(db, 'design', :view => {:map => '<map_code>', :reduce => '<reduce_code>'}).query_view!
18
+ end
19
+
20
+ it "should not update a view when the list function hasn't changed" do
21
+ db = mock 'db', :get => {'views' => {'view' => {'map' => '<map_code>', 'reduce' => '<reduce_code>'}}, 'lists' => {'list0' => '<list_code>'}}, :view => nil
22
+ db.should_not_receive(:save_doc)
23
+ CouchPotato::View::ViewQuery.new(db, 'design', {:view => {:map => '<map_code>', :reduce => '<reduce_code>'}}, :list0 => '<list_code>').query_view!
24
+ end
25
+
26
+ it "should update a view when the map function has changed" do
27
+ db = mock 'db', :get => {'views' => {'view2' => {'map' => '<map_code>', 'reduce' => '<reduce_code>'}}}, :view => nil
28
+ db.should_receive(:save_doc)
29
+ CouchPotato::View::ViewQuery.new(db, 'design', :view2 => {:map => '<new map_code>', :reduce => '<reduce_code>'}).query_view!
30
+ end
31
+
32
+ it "should not pass in a reduce key if there is no reduce function" do
33
+ db = mock 'db', :get => {'views' => {}}, :view => nil
34
+
35
+ db.should_receive(:save_doc).with('views' => {'view3' => {'map' => '<map code>'}})
36
+
37
+ CouchPotato::View::ViewQuery.new(db, 'design', :view3 => {:map => '<map code>', :reduce => nil}).query_view!
38
+ end
39
+
40
+ it "should update a view when the reduce function has changed" do
41
+ db = mock 'db', :get => {'views' => {'view4' => {'map' => '<map_code>', 'reduce' => '<reduce_code>'}}}, :view => nil
42
+ db.should_receive(:save_doc)
43
+ CouchPotato::View::ViewQuery.new(db, 'design', :view4 => {:map => '<map_code>', :reduce => '<new reduce_code>'}).query_view!
44
+ end
45
+
46
+ it "should update a view when the list function has changed" do
47
+ db = mock 'db', :get => {
48
+ 'views' => {'view5' => {'map' => '<map_code>', 'reduce' => '<reduce_code>'}},
49
+ 'lists' => {'list1' => '<list_code>'}
50
+ }, :view => nil
51
+ db.should_receive(:save_doc)
52
+ CouchPotato::View::ViewQuery.new(db, 'design', {:view5 => {:map => '<map_code>', :reduce => '<reduce_code>'}}, :list1 => '<new_list_code>').query_view!
53
+ end
54
+
55
+ it "should update a view when there wasn't a list function but now there is one" do
56
+ db = mock 'db', :get => {
57
+ 'views' => {'view6' => {'map' => '<map_code>', 'reduce' => '<reduce_code>'}}
58
+ }, :view => nil
59
+ db.should_receive(:save_doc)
60
+ CouchPotato::View::ViewQuery.new(db, 'design', {:view6 => {:map => '<map_code>', :reduce => '<reduce_code>'}}, :list1 => '<new_list_code>').query_view!
61
+ end
62
+
63
+ it "should not update a view when there is a list function but no list function is passed" do
64
+ db = mock 'db', :get => {
65
+ 'views' => {'view7' => {'map' => '<map_code>', 'reduce' => '<reduce_code>'}},
66
+ 'lists' => {'list1' => '<list_code>'}
67
+ }, :view => nil
68
+ db.should_not_receive(:save_doc)
69
+ CouchPotato::View::ViewQuery.new(db, 'design', {:view7 => {:map => '<map_code>', :reduce => '<reduce_code>'}}, {}).query_view!
70
+ end
71
+
72
+ it "should not update a view when there were no lists before and no list function is passed" do
73
+ db = mock 'db', :get => {
74
+ 'views' => {'view8' => {'map' => '<map_code>', 'reduce' => '<reduce_code>'}}
75
+ }, :view => nil
76
+ db.should_not_receive(:save_doc)
77
+ CouchPotato::View::ViewQuery.new(db, 'design', {:view8 => {:map => '<map_code>', :reduce => '<reduce_code>'}}, {}).query_view!
78
+ end
79
+
80
+ it "should query CouchRest directly when querying a list" do
81
+ db = stub('db').as_null_object
82
+ CouchRest.should_receive(:get).with('http://127.0.0.1:5984/couch_potato_test/_design/my_design/_list/list1/view9?key=1')
83
+ CouchPotato::View::ViewQuery.new(db, 'my_design', {:view9 => {:map => '<map_code>', :reduce => '<reduce_code>'}}, :list1 => '<new_list_code>').query_view!(:key => 1)
84
+ end
85
+
86
+ end
@@ -0,0 +1,40 @@
1
+ require 'spec_helper'
2
+
3
+ describe "create" do
4
+ before(:all) do
5
+ recreate_db
6
+ end
7
+
8
+ before(:each) do
9
+ @comment = Comment.new :title => 'my_title', :updated_at => Time.now - 100
10
+ CouchPotato.database.save_document! @comment
11
+ end
12
+
13
+ it "should update the revision" do
14
+ old_rev = @comment._rev
15
+ @comment.title = 'xyz'
16
+ CouchPotato.database.save_document! @comment
17
+ @comment._rev.should_not == old_rev
18
+ @comment._rev.should_not be_nil
19
+ end
20
+
21
+ it "should not update created at" do
22
+ old_created_at = @comment.created_at
23
+ @comment.title = 'xyz'
24
+ CouchPotato.database.save_document! @comment
25
+ @comment.created_at.should == old_created_at
26
+ end
27
+
28
+ it "should update updated at" do
29
+ old_updated_at = @comment.updated_at
30
+ @comment.title = 'xyz'
31
+ CouchPotato.database.save_document! @comment
32
+ @comment.updated_at.should > old_updated_at
33
+ end
34
+
35
+ it "should update the attributes" do
36
+ @comment.title = 'new title'
37
+ CouchPotato.database.save_document! @comment
38
+ CouchPotato.couchrest_database.get("#{@comment.id}").title.should == 'new title'
39
+ end
40
+ end
@@ -0,0 +1,28 @@
1
+ require 'spec_helper'
2
+
3
+ describe "automatic view updates" do
4
+ before(:each) do
5
+ recreate_db
6
+ @db = CouchPotato.couchrest_database
7
+ end
8
+
9
+ it "should update a view that doesn't match the given functions" do
10
+ CouchPotato::View::ViewQuery.new(@db, 'test_design1', {'test_view' => {:map => 'function(doc) {}', :reduce => 'function() {}'}}, nil).query_view! # create view
11
+ CouchPotato::View::ViewQuery.new(@db, 'test_design1', {'test_view' => {:map => 'function(doc) {emit(doc.id, null)}', :reduce => 'function(key, values) {return sum(values)}'}}, nil).query_view!
12
+ CouchPotato.database.load('_design/test_design1')['views']['test_view'].should == {
13
+ 'map' => 'function(doc) {emit(doc.id, null)}',
14
+ 'reduce' => 'function(key, values) {return sum(values)}'
15
+ }
16
+ end
17
+
18
+ it "should only update a view once to avoid writing the view for every request" do
19
+ CouchPotato::View::ViewQuery.new(@db, 'test_design2', {'test_view' => {:map => 'function(doc) {}', :reduce => 'function() {}'}}, nil).query_view! # create view
20
+ CouchPotato::View::ViewQuery.new(@db, 'test_design2', {'test_view' => {:map => 'function(doc) {emit(doc.id, null)}', :reduce => 'function(key, values) {return sum(values)}'}}, nil).query_view!
21
+ CouchPotato::View::ViewQuery.new(@db, 'test_design2', {'test_view' => {:map => 'function(doc) {}', :reduce => 'function() {}'}}, nil).query_view!
22
+ CouchPotato.database.load('_design/test_design2')['views']['test_view'].should == {
23
+ 'map' => 'function(doc) {emit(doc.id, null)}',
24
+ 'reduce' => 'function(key, values) {return sum(values)}'
25
+ }
26
+ end
27
+
28
+ end
metadata ADDED
@@ -0,0 +1,243 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: couch_potato-rails2
3
+ version: !ruby/object:Gem::Version
4
+ prerelease:
5
+ version: 0.5.6
6
+ platform: ruby
7
+ authors:
8
+ - Alexander Lang
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+
13
+ date: 2011-07-18 00:00:00 -04:00
14
+ default_executable:
15
+ dependencies:
16
+ - !ruby/object:Gem::Dependency
17
+ name: json
18
+ prerelease: false
19
+ requirement: &id001 !ruby/object:Gem::Requirement
20
+ none: false
21
+ requirements:
22
+ - - ">="
23
+ - !ruby/object:Gem::Version
24
+ version: "0"
25
+ type: :runtime
26
+ version_requirements: *id001
27
+ - !ruby/object:Gem::Dependency
28
+ name: couchrest
29
+ prerelease: false
30
+ requirement: &id002 !ruby/object:Gem::Requirement
31
+ none: false
32
+ requirements:
33
+ - - ">="
34
+ - !ruby/object:Gem::Version
35
+ version: 1.0.1
36
+ type: :runtime
37
+ version_requirements: *id002
38
+ - !ruby/object:Gem::Dependency
39
+ name: rspec
40
+ prerelease: false
41
+ requirement: &id003 !ruby/object:Gem::Requirement
42
+ none: false
43
+ requirements:
44
+ - - ">="
45
+ - !ruby/object:Gem::Version
46
+ version: "2.0"
47
+ type: :development
48
+ version_requirements: *id003
49
+ - !ruby/object:Gem::Dependency
50
+ name: timecop
51
+ prerelease: false
52
+ requirement: &id004 !ruby/object:Gem::Requirement
53
+ none: false
54
+ requirements:
55
+ - - ">="
56
+ - !ruby/object:Gem::Version
57
+ version: "0"
58
+ type: :development
59
+ version_requirements: *id004
60
+ - !ruby/object:Gem::Dependency
61
+ name: tzinfo
62
+ prerelease: false
63
+ requirement: &id005 !ruby/object:Gem::Requirement
64
+ none: false
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: "0"
69
+ type: :development
70
+ version_requirements: *id005
71
+ - !ruby/object:Gem::Dependency
72
+ name: rake
73
+ prerelease: false
74
+ requirement: &id006 !ruby/object:Gem::Requirement
75
+ none: false
76
+ requirements:
77
+ - - ">="
78
+ - !ruby/object:Gem::Version
79
+ version: "0"
80
+ type: :development
81
+ version_requirements: *id006
82
+ description: Ruby persistence layer for CouchDB
83
+ email: alex@upstre.am
84
+ executables: []
85
+
86
+ extensions: []
87
+
88
+ extra_rdoc_files: []
89
+
90
+ files:
91
+ - .gitignore
92
+ - .rvmrc
93
+ - .travis.yml
94
+ - CHANGES.md
95
+ - CREDITS
96
+ - Gemfile
97
+ - MIT-LICENSE.txt
98
+ - README.md
99
+ - Rakefile
100
+ - couch_potato.gemspec
101
+ - init.rb
102
+ - lib/core_ext/date.rb
103
+ - lib/core_ext/object.rb
104
+ - lib/core_ext/string.rb
105
+ - lib/core_ext/symbol.rb
106
+ - lib/core_ext/time.rb
107
+ - lib/couch_potato.rb
108
+ - lib/couch_potato/database.rb
109
+ - lib/couch_potato/persistence.rb
110
+ - lib/couch_potato/persistence/active_model_compliance.rb
111
+ - lib/couch_potato/persistence/attachments.rb
112
+ - lib/couch_potato/persistence/callbacks.rb
113
+ - lib/couch_potato/persistence/dirty_attributes.rb
114
+ - lib/couch_potato/persistence/ghost_attributes.rb
115
+ - lib/couch_potato/persistence/json.rb
116
+ - lib/couch_potato/persistence/magic_timestamps.rb
117
+ - lib/couch_potato/persistence/properties.rb
118
+ - lib/couch_potato/persistence/simple_property.rb
119
+ - lib/couch_potato/persistence/type_caster.rb
120
+ - lib/couch_potato/railtie.rb
121
+ - lib/couch_potato/rspec.rb
122
+ - lib/couch_potato/rspec/matchers.rb
123
+ - lib/couch_potato/rspec/matchers/json2.js
124
+ - lib/couch_potato/rspec/matchers/list_as_matcher.rb
125
+ - lib/couch_potato/rspec/matchers/map_to_matcher.rb
126
+ - lib/couch_potato/rspec/matchers/print_r.js
127
+ - lib/couch_potato/rspec/matchers/reduce_to_matcher.rb
128
+ - lib/couch_potato/rspec/stub_db.rb
129
+ - lib/couch_potato/validation.rb
130
+ - lib/couch_potato/validation/with_active_model.rb
131
+ - lib/couch_potato/validation/with_validatable.rb
132
+ - lib/couch_potato/version.rb
133
+ - lib/couch_potato/view/base_view_spec.rb
134
+ - lib/couch_potato/view/custom_view_spec.rb
135
+ - lib/couch_potato/view/custom_views.rb
136
+ - lib/couch_potato/view/lists.rb
137
+ - lib/couch_potato/view/model_view_spec.rb
138
+ - lib/couch_potato/view/properties_view_spec.rb
139
+ - lib/couch_potato/view/raw_view_spec.rb
140
+ - lib/couch_potato/view/view_query.rb
141
+ - rails/init.rb
142
+ - rails/reload_classes.rb
143
+ - spec/attachments_spec.rb
144
+ - spec/callbacks_spec.rb
145
+ - spec/create_spec.rb
146
+ - spec/custom_view_spec.rb
147
+ - spec/default_property_spec.rb
148
+ - spec/destroy_spec.rb
149
+ - spec/fixtures/address.rb
150
+ - spec/fixtures/person.rb
151
+ - spec/property_spec.rb
152
+ - spec/rails_spec.rb
153
+ - spec/railtie_spec.rb
154
+ - spec/spec.opts
155
+ - spec/spec_helper.rb
156
+ - spec/unit/active_model_compliance_spec.rb
157
+ - spec/unit/attributes_spec.rb
158
+ - spec/unit/base_view_spec_spec.rb
159
+ - spec/unit/callbacks_spec.rb
160
+ - spec/unit/couch_potato_spec.rb
161
+ - spec/unit/create_spec.rb
162
+ - spec/unit/custom_views_spec.rb
163
+ - spec/unit/database_spec.rb
164
+ - spec/unit/date_spec.rb
165
+ - spec/unit/dirty_attributes_spec.rb
166
+ - spec/unit/initialize_spec.rb
167
+ - spec/unit/json_spec.rb
168
+ - spec/unit/lists_spec.rb
169
+ - spec/unit/model_view_spec_spec.rb
170
+ - spec/unit/properties_view_spec_spec.rb
171
+ - spec/unit/rspec_matchers_spec.rb
172
+ - spec/unit/rspec_stub_db_spec.rb
173
+ - spec/unit/string_spec.rb
174
+ - spec/unit/time_spec.rb
175
+ - spec/unit/validation_spec.rb
176
+ - spec/unit/view_query_spec.rb
177
+ - spec/update_spec.rb
178
+ - spec/view_updates_spec.rb
179
+ has_rdoc: true
180
+ homepage: http://github.com/langalex/couch_potato
181
+ licenses: []
182
+
183
+ post_install_message:
184
+ rdoc_options: []
185
+
186
+ require_paths:
187
+ - lib
188
+ required_ruby_version: !ruby/object:Gem::Requirement
189
+ none: false
190
+ requirements:
191
+ - - ">="
192
+ - !ruby/object:Gem::Version
193
+ version: "0"
194
+ required_rubygems_version: !ruby/object:Gem::Requirement
195
+ none: false
196
+ requirements:
197
+ - - ">="
198
+ - !ruby/object:Gem::Version
199
+ version: "0"
200
+ requirements: []
201
+
202
+ rubyforge_project:
203
+ rubygems_version: 1.5.2
204
+ signing_key:
205
+ specification_version: 3
206
+ summary: Ruby persistence layer for CouchDB
207
+ test_files:
208
+ - spec/attachments_spec.rb
209
+ - spec/callbacks_spec.rb
210
+ - spec/create_spec.rb
211
+ - spec/custom_view_spec.rb
212
+ - spec/default_property_spec.rb
213
+ - spec/destroy_spec.rb
214
+ - spec/fixtures/address.rb
215
+ - spec/fixtures/person.rb
216
+ - spec/property_spec.rb
217
+ - spec/rails_spec.rb
218
+ - spec/railtie_spec.rb
219
+ - spec/spec.opts
220
+ - spec/spec_helper.rb
221
+ - spec/unit/active_model_compliance_spec.rb
222
+ - spec/unit/attributes_spec.rb
223
+ - spec/unit/base_view_spec_spec.rb
224
+ - spec/unit/callbacks_spec.rb
225
+ - spec/unit/couch_potato_spec.rb
226
+ - spec/unit/create_spec.rb
227
+ - spec/unit/custom_views_spec.rb
228
+ - spec/unit/database_spec.rb
229
+ - spec/unit/date_spec.rb
230
+ - spec/unit/dirty_attributes_spec.rb
231
+ - spec/unit/initialize_spec.rb
232
+ - spec/unit/json_spec.rb
233
+ - spec/unit/lists_spec.rb
234
+ - spec/unit/model_view_spec_spec.rb
235
+ - spec/unit/properties_view_spec_spec.rb
236
+ - spec/unit/rspec_matchers_spec.rb
237
+ - spec/unit/rspec_stub_db_spec.rb
238
+ - spec/unit/string_spec.rb
239
+ - spec/unit/time_spec.rb
240
+ - spec/unit/validation_spec.rb
241
+ - spec/unit/view_query_spec.rb
242
+ - spec/update_spec.rb
243
+ - spec/view_updates_spec.rb