couchrest_model 1.0.0.beta7 → 1.0.0.beta8
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +25 -8
- data/Rakefile +7 -6
- data/THANKS.md +2 -0
- data/history.txt +25 -20
- data/lib/couchrest/model/base.rb +1 -1
- data/lib/couchrest/model/extended_attachments.rb +9 -5
- data/lib/couchrest/model/validations/uniqueness.rb +4 -5
- data/lib/couchrest/model/views.rb +5 -12
- data/lib/couchrest/model.rb +1 -1
- data/lib/couchrest/railtie.rb +11 -0
- data/lib/couchrest_model.rb +10 -5
- data/lib/rails/generators/couchrest_model/model/model_generator.rb +26 -0
- data/lib/rails/generators/couchrest_model/model/templates/model.rb +2 -0
- data/lib/rails/generators/couchrest_model.rb +16 -0
- data/spec/couchrest/assocations_spec.rb +15 -32
- data/spec/couchrest/attachment_spec.rb +35 -7
- data/spec/couchrest/attribute_protection_spec.rb +25 -13
- data/spec/couchrest/inherited_spec.rb +2 -2
- data/spec/couchrest/property_spec.rb +67 -55
- data/spec/couchrest/validations.rb +12 -0
- data/spec/fixtures/more/client.rb +6 -0
- data/spec/fixtures/more/sale_entry.rb +9 -0
- data/spec/fixtures/more/sale_invoice.rb +13 -0
- metadata +36 -15
- data/examples/model/example.rb +0 -144
- data/utils/remap.rb +0 -27
- data/utils/subset.rb +0 -30
@@ -23,13 +23,13 @@ describe "Model Attributes" do
|
|
23
23
|
user.name.should == "will"
|
24
24
|
user.phone.should == "555-5555"
|
25
25
|
end
|
26
|
-
|
26
|
+
|
27
27
|
it "should recreate from the database properly" do
|
28
28
|
user = NoProtection.new
|
29
29
|
user.name = "will"
|
30
30
|
user.phone = "555-5555"
|
31
31
|
user.save!
|
32
|
-
|
32
|
+
|
33
33
|
user = NoProtection.get(user.id)
|
34
34
|
user.name.should == "will"
|
35
35
|
user.phone.should == "555-5555"
|
@@ -43,6 +43,8 @@ describe "Model Attributes" do
|
|
43
43
|
property :admin, :default => false
|
44
44
|
end
|
45
45
|
|
46
|
+
it { expect { WithAccessible.new(nil) }.to_not raise_error }
|
47
|
+
|
46
48
|
it "should recognize accessible properties" do
|
47
49
|
props = WithAccessible.accessible_properties.map { |prop| prop.name}
|
48
50
|
props.should include("name")
|
@@ -50,7 +52,7 @@ describe "Model Attributes" do
|
|
50
52
|
end
|
51
53
|
|
52
54
|
it "should protect non-accessible properties set through new" do
|
53
|
-
user = WithAccessible.new(:name => "will", :admin => true)
|
55
|
+
user = WithAccessible.new(:name => "will", :admin => true)
|
54
56
|
|
55
57
|
user.name.should == "will"
|
56
58
|
user.admin.should == false
|
@@ -72,6 +74,8 @@ describe "Model Attributes" do
|
|
72
74
|
property :admin, :default => false, :protected => true
|
73
75
|
end
|
74
76
|
|
77
|
+
it { expect { WithProtected.new(nil) }.to_not raise_error }
|
78
|
+
|
75
79
|
it "should recognize protected properties" do
|
76
80
|
props = WithProtected.protected_properties.map { |prop| prop.name}
|
77
81
|
props.should_not include("name")
|
@@ -79,7 +83,7 @@ describe "Model Attributes" do
|
|
79
83
|
end
|
80
84
|
|
81
85
|
it "should protect non-accessible properties set through new" do
|
82
|
-
user = WithProtected.new(:name => "will", :admin => true)
|
86
|
+
user = WithProtected.new(:name => "will", :admin => true)
|
83
87
|
|
84
88
|
user.name.should == "will"
|
85
89
|
user.admin.should == false
|
@@ -94,15 +98,23 @@ describe "Model Attributes" do
|
|
94
98
|
end
|
95
99
|
end
|
96
100
|
|
97
|
-
describe "protected
|
98
|
-
class
|
101
|
+
describe "Model Base", "mixing protected and accessible flags" do
|
102
|
+
class WithBothAndUnspecified < CouchRest::Model::Base
|
99
103
|
use_database TEST_SERVER.default_database
|
100
104
|
property :name, :accessible => true
|
101
105
|
property :admin, :default => false, :protected => true
|
106
|
+
property :phone, :default => 'unset phone number'
|
102
107
|
end
|
103
108
|
|
104
|
-
it
|
105
|
-
|
109
|
+
it { expect { WithBothAndUnspecified.new }.to_not raise_error }
|
110
|
+
it { expect { WithBothAndUnspecified.new(nil) }.to_not raise_error }
|
111
|
+
|
112
|
+
it 'should assume that any unspecified property is protected by default' do
|
113
|
+
user = WithBothAndUnspecified.new(:name => 'will', :admin => true, :phone => '555-1234')
|
114
|
+
|
115
|
+
user.name.should == 'will'
|
116
|
+
user.admin.should == false
|
117
|
+
user.phone.should == 'unset phone number'
|
106
118
|
end
|
107
119
|
end
|
108
120
|
|
@@ -113,7 +125,7 @@ describe "Model Attributes" do
|
|
113
125
|
property :admin, :default => false, :protected => true
|
114
126
|
view_by :name
|
115
127
|
end
|
116
|
-
|
128
|
+
|
117
129
|
before(:each) do
|
118
130
|
@user = WithProtected.new
|
119
131
|
@user.name = "will"
|
@@ -128,12 +140,12 @@ describe "Model Attributes" do
|
|
128
140
|
|
129
141
|
it "Base#get should not strip protected attributes" do
|
130
142
|
reloaded = WithProtected.get( @user.id )
|
131
|
-
verify_attrs reloaded
|
143
|
+
verify_attrs reloaded
|
132
144
|
end
|
133
145
|
|
134
146
|
it "Base#get! should not strip protected attributes" do
|
135
147
|
reloaded = WithProtected.get!( @user.id )
|
136
|
-
verify_attrs reloaded
|
148
|
+
verify_attrs reloaded
|
137
149
|
end
|
138
150
|
|
139
151
|
it "Base#all should not strip protected attributes" do
|
@@ -141,13 +153,13 @@ describe "Model Attributes" do
|
|
141
153
|
docs = WithProtected.all(:key => @user.id)
|
142
154
|
docs.size.should == 1
|
143
155
|
reloaded = docs.first
|
144
|
-
verify_attrs reloaded
|
156
|
+
verify_attrs reloaded
|
145
157
|
end
|
146
158
|
|
147
159
|
it "views should not strip protected attributes" do
|
148
160
|
docs = WithProtected.by_name(:startkey => "will", :endkey => "will")
|
149
161
|
reloaded = docs.first
|
150
|
-
verify_attrs reloaded
|
162
|
+
verify_attrs reloaded
|
151
163
|
end
|
152
164
|
end
|
153
165
|
end
|
@@ -21,14 +21,14 @@ begin
|
|
21
21
|
class ExtendedChild < ExtendedParent
|
22
22
|
end
|
23
23
|
|
24
|
-
describe "Using chained inheritance without CouchRest::
|
24
|
+
describe "Using chained inheritance without CouchRest::Model::Base" do
|
25
25
|
it "should preserve inheritable attributes" do
|
26
26
|
PlainParent.foo.should == :bar
|
27
27
|
PlainChild.foo.should == :bar
|
28
28
|
end
|
29
29
|
end
|
30
30
|
|
31
|
-
describe "Using chained inheritance with CouchRest::
|
31
|
+
describe "Using chained inheritance with CouchRest::Model::Base" do
|
32
32
|
it "should preserve inheritable attributes" do
|
33
33
|
ExtendedParent.foo.should == :bar
|
34
34
|
ExtendedChild.foo.should == :bar
|
@@ -11,36 +11,36 @@ require File.join(FIXTURE_PATH, 'more', 'course')
|
|
11
11
|
|
12
12
|
|
13
13
|
describe "Model properties" do
|
14
|
-
|
14
|
+
|
15
15
|
before(:each) do
|
16
16
|
reset_test_db!
|
17
17
|
@card = Card.new(:first_name => "matt")
|
18
18
|
end
|
19
|
-
|
19
|
+
|
20
20
|
it "should be accessible from the object" do
|
21
21
|
@card.properties.should be_an_instance_of(Array)
|
22
22
|
@card.properties.map{|p| p.name}.should include("first_name")
|
23
23
|
end
|
24
|
-
|
24
|
+
|
25
25
|
it "should let you access a property value (getter)" do
|
26
26
|
@card.first_name.should == "matt"
|
27
27
|
end
|
28
|
-
|
28
|
+
|
29
29
|
it "should let you set a property value (setter)" do
|
30
30
|
@card.last_name = "Aimonetti"
|
31
31
|
@card.last_name.should == "Aimonetti"
|
32
32
|
end
|
33
|
-
|
33
|
+
|
34
34
|
it "should not let you set a property value if it's read only" do
|
35
35
|
lambda{@card.read_only_value = "test"}.should raise_error
|
36
36
|
end
|
37
|
-
|
37
|
+
|
38
38
|
it "should let you use an alias for an attribute" do
|
39
39
|
@card.last_name = "Aimonetti"
|
40
40
|
@card.family_name.should == "Aimonetti"
|
41
41
|
@card.family_name.should == @card.last_name
|
42
42
|
end
|
43
|
-
|
43
|
+
|
44
44
|
it "should let you use an alias for a casted attribute" do
|
45
45
|
@card.cast_alias = Person.new(:name => ["Aimonetti"])
|
46
46
|
@card.cast_alias.name.should == ["Aimonetti"]
|
@@ -50,7 +50,7 @@ describe "Model properties" do
|
|
50
50
|
card.calias.name.should == ["Aimonetti"]
|
51
51
|
end
|
52
52
|
|
53
|
-
|
53
|
+
|
54
54
|
it "should be auto timestamped" do
|
55
55
|
@card.created_at.should be_nil
|
56
56
|
@card.updated_at.should be_nil
|
@@ -59,45 +59,57 @@ describe "Model properties" do
|
|
59
59
|
@card.updated_at.should_not be_nil
|
60
60
|
end
|
61
61
|
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
62
|
+
describe '#read_attribute' do
|
63
|
+
it "should let you use read_attribute method" do
|
64
|
+
@card.last_name = "Aimonetti"
|
65
|
+
@card.read_attribute(:last_name).should eql('Aimonetti')
|
66
|
+
@card.read_attribute('last_name').should eql('Aimonetti')
|
67
|
+
last_name_prop = @card.properties.find{|p| p.name == 'last_name'}
|
68
|
+
@card.read_attribute(last_name_prop).should eql('Aimonetti')
|
69
|
+
end
|
69
70
|
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
@card.write_attribute('last_name', 'Aimonetti 2')
|
74
|
-
@card.last_name.should eql('Aimonetti 2')
|
75
|
-
last_name_prop = @card.properties.find{|p| p.name == 'last_name'}
|
76
|
-
@card.write_attribute(last_name_prop, 'Aimonetti 3')
|
77
|
-
@card.last_name.should eql('Aimonetti 3')
|
71
|
+
it 'should raise an error if the property does not exist' do
|
72
|
+
expect { @card.read_attribute(:this_property_should_not_exist) }.to raise_error(ArgumentError)
|
73
|
+
end
|
78
74
|
end
|
79
75
|
|
80
|
-
|
81
|
-
|
82
|
-
@card.
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
76
|
+
describe '#write_attribute' do
|
77
|
+
it "should let you use write_attribute method" do
|
78
|
+
@card.write_attribute(:last_name, 'Aimonetti 1')
|
79
|
+
@card.last_name.should eql('Aimonetti 1')
|
80
|
+
@card.write_attribute('last_name', 'Aimonetti 2')
|
81
|
+
@card.last_name.should eql('Aimonetti 2')
|
82
|
+
last_name_prop = @card.properties.find{|p| p.name == 'last_name'}
|
83
|
+
@card.write_attribute(last_name_prop, 'Aimonetti 3')
|
84
|
+
@card.last_name.should eql('Aimonetti 3')
|
85
|
+
end
|
87
86
|
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
87
|
+
it 'should raise an error if the property does not exist' do
|
88
|
+
expect { @card.write_attribute(:this_property_should_not_exist, 823) }.to raise_error(ArgumentError)
|
89
|
+
end
|
90
|
+
|
91
|
+
it "should let you use write_attribute on readonly properties" do
|
92
|
+
lambda {
|
93
|
+
@card.read_only_value = "foo"
|
94
|
+
}.should raise_error
|
95
|
+
@card.write_attribute(:read_only_value, "foo")
|
96
|
+
@card.read_only_value.should == 'foo'
|
97
|
+
end
|
98
|
+
|
99
|
+
it "should cast via write_attribute" do
|
100
|
+
@card.write_attribute(:cast_alias, {:name => ["Sam", "Lown"]})
|
101
|
+
@card.cast_alias.class.should eql(Person)
|
102
|
+
@card.cast_alias.name.last.should eql("Lown")
|
103
|
+
end
|
93
104
|
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
105
|
+
it "should not cast via write_attribute if property not casted" do
|
106
|
+
@card.write_attribute(:first_name, {:name => "Sam"})
|
107
|
+
@card.first_name.class.should eql(Hash)
|
108
|
+
@card.first_name[:name].should eql("Sam")
|
109
|
+
end
|
98
110
|
end
|
99
111
|
|
100
|
-
|
112
|
+
|
101
113
|
describe "mass assignment protection" do
|
102
114
|
|
103
115
|
it "should not store protected attribute using mass assignment" do
|
@@ -120,12 +132,12 @@ describe "Model properties" do
|
|
120
132
|
end
|
121
133
|
|
122
134
|
end
|
123
|
-
|
135
|
+
|
124
136
|
describe "validation" do
|
125
137
|
before(:each) do
|
126
138
|
@invoice = Invoice.new(:client_name => "matt", :employee_name => "Chris", :location => "San Diego, CA")
|
127
139
|
end
|
128
|
-
|
140
|
+
|
129
141
|
it "should be able to be validated" do
|
130
142
|
@card.valid?.should == true
|
131
143
|
end
|
@@ -136,7 +148,7 @@ describe "Model properties" do
|
|
136
148
|
@card.errors.should_not be_empty
|
137
149
|
@card.errors[:first_name].should == ["can't be blank"]
|
138
150
|
end
|
139
|
-
|
151
|
+
|
140
152
|
it "should let you look up errors for a field by a string name" do
|
141
153
|
@card.first_name = nil
|
142
154
|
@card.should_not be_valid
|
@@ -150,13 +162,13 @@ describe "Model properties" do
|
|
150
162
|
@invoice.errors[:client_name].should == ["can't be blank"]
|
151
163
|
@invoice.errors[:employee_name].should_not be_empty
|
152
164
|
end
|
153
|
-
|
165
|
+
|
154
166
|
it "should let you set an error message" do
|
155
167
|
@invoice.location = nil
|
156
168
|
@invoice.valid?
|
157
169
|
@invoice.errors[:location].should == ["Hey stupid!, you forgot the location"]
|
158
170
|
end
|
159
|
-
|
171
|
+
|
160
172
|
it "should validate before saving" do
|
161
173
|
@invoice.location = nil
|
162
174
|
@invoice.should_not be_valid
|
@@ -164,7 +176,7 @@ describe "Model properties" do
|
|
164
176
|
@invoice.should be_new
|
165
177
|
end
|
166
178
|
end
|
167
|
-
|
179
|
+
|
168
180
|
describe "casting" do
|
169
181
|
before(:each) do
|
170
182
|
@course = Course.new(:title => 'Relaxation')
|
@@ -188,14 +200,14 @@ describe "Model properties" do
|
|
188
200
|
@course['started_on'].should be_an_instance_of(Date)
|
189
201
|
end
|
190
202
|
end
|
191
|
-
|
203
|
+
|
192
204
|
describe "when type primitive is a String" do
|
193
205
|
it "keeps string value unchanged" do
|
194
206
|
value = "1.0"
|
195
207
|
@course.title = value
|
196
208
|
@course['title'].should equal(value)
|
197
209
|
end
|
198
|
-
|
210
|
+
|
199
211
|
it "it casts to string representation of the value" do
|
200
212
|
@course.title = 1.0
|
201
213
|
@course['title'].should eql("1.0")
|
@@ -584,7 +596,7 @@ describe "Model properties" do
|
|
584
596
|
@course['klass'].should eql('NoClass')
|
585
597
|
end
|
586
598
|
end
|
587
|
-
|
599
|
+
|
588
600
|
describe 'when type primitive is a Boolean' do
|
589
601
|
|
590
602
|
[ true, 'true', 'TRUE', '1', 1, 't', 'T' ].each do |value|
|
@@ -609,7 +621,7 @@ describe "Model properties" do
|
|
609
621
|
end
|
610
622
|
|
611
623
|
it "should respond to requests with ? modifier" do
|
612
|
-
@course.active = nil
|
624
|
+
@course.active = nil
|
613
625
|
@course.active?.should be_false
|
614
626
|
@course.active = false
|
615
627
|
@course.active?.should be_false
|
@@ -618,7 +630,7 @@ describe "Model properties" do
|
|
618
630
|
end
|
619
631
|
|
620
632
|
it "should respond to requests with ? modifier on TrueClass" do
|
621
|
-
@course.very_active = nil
|
633
|
+
@course.very_active = nil
|
622
634
|
@course.very_active?.should be_false
|
623
635
|
@course.very_active = false
|
624
636
|
@course.very_active?.should be_false
|
@@ -631,7 +643,7 @@ describe "Model properties" do
|
|
631
643
|
end
|
632
644
|
|
633
645
|
describe "properties of array of casted models" do
|
634
|
-
|
646
|
+
|
635
647
|
before(:each) do
|
636
648
|
@course = Course.new :title => 'Test Course'
|
637
649
|
end
|
@@ -691,13 +703,13 @@ describe "a casted model retrieved from the database" do
|
|
691
703
|
@cat.save
|
692
704
|
@cat = Cat.get(@cat.id)
|
693
705
|
end
|
694
|
-
|
706
|
+
|
695
707
|
describe "as a casted property" do
|
696
708
|
it "should already be casted_by its parent" do
|
697
709
|
@cat.favorite_toy.casted_by.should === @cat
|
698
710
|
end
|
699
711
|
end
|
700
|
-
|
712
|
+
|
701
713
|
describe "from a casted collection" do
|
702
714
|
it "should already be casted_by its parent" do
|
703
715
|
@cat.toys[0].casted_by.should === @cat
|
@@ -789,7 +801,7 @@ describe "Property Class" do
|
|
789
801
|
it "should set parent as casted_by object in CastedArray" do
|
790
802
|
property = CouchRest::Model::Property.new(:test, [Object])
|
791
803
|
parent = mock("FooObject")
|
792
|
-
property.cast(parent, ["2010-06-01", "2010-06-02"]).casted_by.should eql(parent)
|
804
|
+
property.cast(parent, ["2010-06-01", "2010-06-02"]).casted_by.should eql(parent)
|
793
805
|
end
|
794
806
|
|
795
807
|
it "should set casted_by on new value" do
|
@@ -57,6 +57,7 @@ describe "Validations" do
|
|
57
57
|
@obj.class.should_receive('view').and_return({'rows' => [ ]})
|
58
58
|
@obj.valid?
|
59
59
|
end
|
60
|
+
|
60
61
|
end
|
61
62
|
|
62
63
|
context "with a proxy parameter" do
|
@@ -65,6 +66,17 @@ describe "Validations" do
|
|
65
66
|
proxy = @obj.should_receive('proxy').and_return(@obj.class)
|
66
67
|
@obj.valid?.should be_true
|
67
68
|
end
|
69
|
+
|
70
|
+
it "should allow specific view" do
|
71
|
+
@obj = WithUniqueValidationProxy.new(:title => 'test 7')
|
72
|
+
@obj.class.should_not_receive('view_by')
|
73
|
+
proxy = mock('Proxy')
|
74
|
+
@obj.should_receive('proxy').and_return(proxy)
|
75
|
+
proxy.should_receive('has_view?').and_return(true)
|
76
|
+
proxy.should_receive('view').and_return({'rows' => [ ]})
|
77
|
+
@obj.valid?
|
78
|
+
end
|
79
|
+
|
68
80
|
end
|
69
81
|
|
70
82
|
|
@@ -0,0 +1,13 @@
|
|
1
|
+
require File.join(FIXTURE_PATH, 'more', 'client')
|
2
|
+
require File.join(FIXTURE_PATH, 'more', 'sale_entry')
|
3
|
+
class SaleInvoice < CouchRest::Model::Base
|
4
|
+
use_database DB
|
5
|
+
|
6
|
+
belongs_to :client
|
7
|
+
belongs_to :alternate_client, :class_name => 'Client', :foreign_key => 'alt_client_id'
|
8
|
+
|
9
|
+
collection_of :entries, :class_name => 'SaleEntry'
|
10
|
+
|
11
|
+
property :date, Date
|
12
|
+
property :price, Integer
|
13
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: couchrest_model
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash: -
|
4
|
+
hash: -1848230060
|
5
5
|
prerelease: true
|
6
6
|
segments:
|
7
7
|
- 1
|
8
8
|
- 0
|
9
9
|
- 0
|
10
|
-
-
|
11
|
-
version: 1.0.0.
|
10
|
+
- beta8
|
11
|
+
version: 1.0.0.beta8
|
12
12
|
platform: ruby
|
13
13
|
authors:
|
14
14
|
- J. Chris Anderson
|
@@ -20,7 +20,7 @@ autorequire:
|
|
20
20
|
bindir: bin
|
21
21
|
cert_chain: []
|
22
22
|
|
23
|
-
date: 2010-
|
23
|
+
date: 2010-08-22 00:00:00 -03:00
|
24
24
|
default_executable:
|
25
25
|
dependencies:
|
26
26
|
- !ruby/object:Gem::Dependency
|
@@ -29,15 +29,14 @@ dependencies:
|
|
29
29
|
requirement: &id001 !ruby/object:Gem::Requirement
|
30
30
|
none: false
|
31
31
|
requirements:
|
32
|
-
- -
|
32
|
+
- - ~>
|
33
33
|
- !ruby/object:Gem::Version
|
34
|
-
hash:
|
34
|
+
hash: 23
|
35
35
|
segments:
|
36
36
|
- 1
|
37
37
|
- 0
|
38
38
|
- 0
|
39
|
-
|
40
|
-
version: 1.0.0.beta
|
39
|
+
version: 1.0.0
|
41
40
|
type: :runtime
|
42
41
|
version_requirements: *id001
|
43
42
|
- !ruby/object:Gem::Dependency
|
@@ -46,7 +45,7 @@ dependencies:
|
|
46
45
|
requirement: &id002 !ruby/object:Gem::Requirement
|
47
46
|
none: false
|
48
47
|
requirements:
|
49
|
-
- -
|
48
|
+
- - ~>
|
50
49
|
- !ruby/object:Gem::Version
|
51
50
|
hash: 17
|
52
51
|
segments:
|
@@ -61,7 +60,7 @@ dependencies:
|
|
61
60
|
requirement: &id003 !ruby/object:Gem::Requirement
|
62
61
|
none: false
|
63
62
|
requirements:
|
64
|
-
- -
|
63
|
+
- - ~>
|
65
64
|
- !ruby/object:Gem::Version
|
66
65
|
hash: 9
|
67
66
|
segments:
|
@@ -77,7 +76,7 @@ dependencies:
|
|
77
76
|
requirement: &id004 !ruby/object:Gem::Requirement
|
78
77
|
none: false
|
79
78
|
requirements:
|
80
|
-
- -
|
79
|
+
- - ~>
|
81
80
|
- !ruby/object:Gem::Version
|
82
81
|
hash: -1848230024
|
83
82
|
segments:
|
@@ -88,6 +87,22 @@ dependencies:
|
|
88
87
|
version: 3.0.0.beta4
|
89
88
|
type: :runtime
|
90
89
|
version_requirements: *id004
|
90
|
+
- !ruby/object:Gem::Dependency
|
91
|
+
name: tzinfo
|
92
|
+
prerelease: false
|
93
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
94
|
+
none: false
|
95
|
+
requirements:
|
96
|
+
- - ~>
|
97
|
+
- !ruby/object:Gem::Version
|
98
|
+
hash: 63
|
99
|
+
segments:
|
100
|
+
- 0
|
101
|
+
- 3
|
102
|
+
- 22
|
103
|
+
version: 0.3.22
|
104
|
+
type: :runtime
|
105
|
+
version_requirements: *id005
|
91
106
|
description: CouchRest Model provides aditional features to the standard CouchRest Document class such as properties, view designs, associations, callbacks, typecasting and validations.
|
92
107
|
email: jchris@apache.org
|
93
108
|
executables: []
|
@@ -103,7 +118,6 @@ files:
|
|
103
118
|
- README.md
|
104
119
|
- Rakefile
|
105
120
|
- THANKS.md
|
106
|
-
- examples/model/example.rb
|
107
121
|
- history.txt
|
108
122
|
- lib/couchrest/model.rb
|
109
123
|
- lib/couchrest/model/associations.rb
|
@@ -130,7 +144,11 @@ files:
|
|
130
144
|
- lib/couchrest/model/validations/locale/en.yml
|
131
145
|
- lib/couchrest/model/validations/uniqueness.rb
|
132
146
|
- lib/couchrest/model/views.rb
|
147
|
+
- lib/couchrest/railtie.rb
|
133
148
|
- lib/couchrest_model.rb
|
149
|
+
- lib/rails/generators/couchrest_model.rb
|
150
|
+
- lib/rails/generators/couchrest_model/model/model_generator.rb
|
151
|
+
- lib/rails/generators/couchrest_model/model/templates/model.rb
|
134
152
|
- spec/couchrest/assocations_spec.rb
|
135
153
|
- spec/couchrest/attachment_spec.rb
|
136
154
|
- spec/couchrest/attribute_protection_spec.rb
|
@@ -151,11 +169,14 @@ files:
|
|
151
169
|
- spec/fixtures/more/article.rb
|
152
170
|
- spec/fixtures/more/card.rb
|
153
171
|
- spec/fixtures/more/cat.rb
|
172
|
+
- spec/fixtures/more/client.rb
|
154
173
|
- spec/fixtures/more/course.rb
|
155
174
|
- spec/fixtures/more/event.rb
|
156
175
|
- spec/fixtures/more/invoice.rb
|
157
176
|
- spec/fixtures/more/person.rb
|
158
177
|
- spec/fixtures/more/question.rb
|
178
|
+
- spec/fixtures/more/sale_entry.rb
|
179
|
+
- spec/fixtures/more/sale_invoice.rb
|
159
180
|
- spec/fixtures/more/service.rb
|
160
181
|
- spec/fixtures/more/user.rb
|
161
182
|
- spec/fixtures/views/lib.js
|
@@ -165,8 +186,6 @@ files:
|
|
165
186
|
- spec/fixtures/views/test_view/test-reduce.js
|
166
187
|
- spec/spec.opts
|
167
188
|
- spec/spec_helper.rb
|
168
|
-
- utils/remap.rb
|
169
|
-
- utils/subset.rb
|
170
189
|
has_rdoc: true
|
171
190
|
homepage: http://github.com/couchrest/couchrest_model
|
172
191
|
licenses: []
|
@@ -221,12 +240,14 @@ test_files:
|
|
221
240
|
- spec/fixtures/more/article.rb
|
222
241
|
- spec/fixtures/more/card.rb
|
223
242
|
- spec/fixtures/more/cat.rb
|
243
|
+
- spec/fixtures/more/client.rb
|
224
244
|
- spec/fixtures/more/course.rb
|
225
245
|
- spec/fixtures/more/event.rb
|
226
246
|
- spec/fixtures/more/invoice.rb
|
227
247
|
- spec/fixtures/more/person.rb
|
228
248
|
- spec/fixtures/more/question.rb
|
249
|
+
- spec/fixtures/more/sale_entry.rb
|
250
|
+
- spec/fixtures/more/sale_invoice.rb
|
229
251
|
- spec/fixtures/more/service.rb
|
230
252
|
- spec/fixtures/more/user.rb
|
231
253
|
- spec/spec_helper.rb
|
232
|
-
- examples/model/example.rb
|