couchrest_model 2.0.0.beta2 → 2.0.0
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/.travis.yml +8 -0
- data/Gemfile +1 -1
- data/README.md +1 -1
- data/Rakefile +9 -24
- data/VERSION +1 -1
- data/couchrest_model.gemspec +7 -5
- data/history.md +17 -1
- data/lib/couchrest/model/associations.rb +16 -11
- data/lib/couchrest/model/base.rb +17 -15
- data/lib/couchrest/model/casted_array.rb +7 -1
- data/lib/couchrest/model/core_extensions/time_parsing.rb +0 -23
- data/lib/couchrest/model/design.rb +282 -0
- data/lib/couchrest/model/designs/design_mapper.rb +79 -0
- data/lib/couchrest/model/designs/view.rb +9 -6
- data/lib/couchrest/model/designs.rb +37 -70
- data/lib/couchrest/model/persistence.rb +5 -5
- data/lib/couchrest/model/properties.rb +5 -16
- data/lib/couchrest/model/property.rb +34 -16
- data/lib/couchrest/model/translation.rb +22 -0
- data/lib/couchrest/model/typecast.rb +54 -43
- data/lib/couchrest/model/utils/migrate.rb +106 -0
- data/lib/couchrest_model.rb +4 -2
- data/lib/tasks/migrations.rake +5 -5
- data/spec/fixtures/models/course.rb +1 -0
- data/spec/fixtures/models/designs.rb +22 -0
- data/spec/spec_helper.rb +1 -0
- data/spec/unit/assocations_spec.rb +7 -0
- data/spec/unit/base_spec.rb +3 -1
- data/spec/unit/{designs/design_spec.rb → design_spec.rb} +6 -6
- data/spec/unit/designs/design_mapper_spec.rb +124 -0
- data/spec/unit/designs/view_spec.rb +30 -4
- data/spec/unit/designs_spec.rb +5 -140
- data/spec/unit/dirty_spec.rb +15 -1
- data/spec/unit/embeddable_spec.rb +2 -2
- data/spec/unit/property_spec.rb +70 -28
- data/spec/unit/translations_spec.rb +31 -0
- data/spec/unit/typecast_spec.rb +99 -19
- data/spec/unit/utils/migrate_spec.rb +25 -0
- metadata +43 -19
- data/lib/couchrest/model/designs/design.rb +0 -284
- data/lib/couchrest/model/migrate.rb +0 -92
data/spec/unit/property_spec.rb
CHANGED
@@ -381,75 +381,111 @@ describe "nested models (not casted)" do
|
|
381
381
|
@cat.siblings.first.name.should eql("Feather")
|
382
382
|
@cat.siblings.last.casted_by.should eql(@cat)
|
383
383
|
end
|
384
|
-
|
385
384
|
end
|
386
385
|
|
387
386
|
describe "Property Class" do
|
388
387
|
|
388
|
+
let :klass do
|
389
|
+
CouchRest::Model::Property
|
390
|
+
end
|
391
|
+
|
389
392
|
it "should provide name as string" do
|
390
|
-
property = CouchRest::Model::Property.new(:test, String)
|
393
|
+
property = CouchRest::Model::Property.new(:test, :type => String)
|
391
394
|
property.name.should eql('test')
|
392
395
|
property.to_s.should eql('test')
|
393
396
|
end
|
394
397
|
|
398
|
+
it "should provide name as a symbol" do
|
399
|
+
property = CouchRest::Model::Property.new(:test, :type => String)
|
400
|
+
property.name.to_sym.should eql(:test)
|
401
|
+
property.to_sym.should eql(:test)
|
402
|
+
end
|
403
|
+
|
395
404
|
it "should provide class from type" do
|
396
|
-
property = CouchRest::Model::Property.new(:test, String)
|
397
|
-
property.
|
405
|
+
property = CouchRest::Model::Property.new(:test, :type => String)
|
406
|
+
property.type.should eql(String)
|
407
|
+
property.array.should be_false
|
398
408
|
end
|
399
409
|
|
400
410
|
it "should provide base class from type in array" do
|
401
|
-
property = CouchRest::Model::Property.new(:test, [String])
|
402
|
-
property.
|
411
|
+
property = CouchRest::Model::Property.new(:test, :type => [String])
|
412
|
+
property.type.should eql(String)
|
413
|
+
property.array.should be_true
|
414
|
+
end
|
415
|
+
|
416
|
+
it "should provide base class and set array type" do
|
417
|
+
property = CouchRest::Model::Property.new(:test, :type => String, :array => true)
|
418
|
+
property.type.should eql(String)
|
419
|
+
property.array.should be_true
|
403
420
|
end
|
404
421
|
|
405
422
|
it "should raise error if type as string requested" do
|
406
423
|
lambda {
|
407
|
-
property = CouchRest::Model::Property.new(:test, 'String')
|
424
|
+
property = CouchRest::Model::Property.new(:test, :type => 'String')
|
408
425
|
}.should raise_error
|
409
426
|
end
|
410
427
|
|
411
428
|
it "should leave type nil and return class as nil also" do
|
412
|
-
property = CouchRest::Model::Property.new(:test, nil)
|
429
|
+
property = CouchRest::Model::Property.new(:test, :type => nil)
|
413
430
|
property.type.should be_nil
|
414
|
-
property.type_class.should be_nil
|
415
431
|
end
|
416
432
|
|
417
433
|
it "should convert empty type array to [Object]" do
|
418
|
-
property = CouchRest::Model::Property.new(:test, [])
|
419
|
-
property.
|
434
|
+
property = CouchRest::Model::Property.new(:test, :type => [])
|
435
|
+
property.type.should eql(Object)
|
420
436
|
end
|
421
437
|
|
422
438
|
it "should set init method option or leave as 'new'" do
|
423
439
|
# (bad example! Time already typecast)
|
424
|
-
property = CouchRest::Model::Property.new(:test, Time)
|
440
|
+
property = CouchRest::Model::Property.new(:test, :type => Time)
|
425
441
|
property.init_method.should eql('new')
|
426
|
-
property = CouchRest::Model::Property.new(:test, Time, :init_method => 'parse')
|
442
|
+
property = CouchRest::Model::Property.new(:test, :type => Time, :init_method => 'parse')
|
427
443
|
property.init_method.should eql('parse')
|
428
444
|
end
|
429
445
|
|
430
446
|
it "should set the allow_blank option to true by default" do
|
431
|
-
property = CouchRest::Model::Property.new(:test, String)
|
447
|
+
property = CouchRest::Model::Property.new(:test, :type => String)
|
432
448
|
property.allow_blank.should be_true
|
433
449
|
end
|
434
450
|
|
435
451
|
it "should allow setting of the allow_blank option to false" do
|
436
|
-
property = CouchRest::Model::Property.new(:test, String, :allow_blank => false)
|
452
|
+
property = CouchRest::Model::Property.new(:test, :type => String, :allow_blank => false)
|
437
453
|
property.allow_blank.should be_false
|
438
454
|
end
|
439
455
|
|
456
|
+
it "should convert block to type" do
|
457
|
+
prop = klass.new(:test) do
|
458
|
+
property :testing
|
459
|
+
end
|
460
|
+
prop.array.should be_false
|
461
|
+
prop.type.should_not be_nil
|
462
|
+
prop.type.class.should eql(Class)
|
463
|
+
obj = prop.type.new
|
464
|
+
obj.should respond_to(:testing)
|
465
|
+
end
|
466
|
+
|
467
|
+
it "should convert block to type with array" do
|
468
|
+
prop = klass.new(:test, :array => true) do
|
469
|
+
property :testing
|
470
|
+
end
|
471
|
+
prop.type.should_not be_nil
|
472
|
+
prop.type.class.should eql(Class)
|
473
|
+
prop.array.should be_true
|
474
|
+
end
|
475
|
+
|
440
476
|
describe "#build" do
|
441
477
|
it "should allow instantiation of new object" do
|
442
|
-
property = CouchRest::Model::Property.new(:test, Date)
|
478
|
+
property = CouchRest::Model::Property.new(:test, :type => Date)
|
443
479
|
obj = property.build(2011, 05, 21)
|
444
480
|
obj.should eql(Date.new(2011, 05, 21))
|
445
481
|
end
|
446
482
|
it "should use init_method if provided" do
|
447
|
-
property = CouchRest::Model::Property.new(:test, Date, :init_method => 'parse')
|
483
|
+
property = CouchRest::Model::Property.new(:test, :type => Date, :init_method => 'parse')
|
448
484
|
obj = property.build("2011-05-21")
|
449
485
|
obj.should eql(Date.new(2011, 05, 21))
|
450
486
|
end
|
451
487
|
it "should use init_method Proc if provided" do
|
452
|
-
property = CouchRest::Model::Property.new(:test, Date, :init_method => Proc.new{|v| Date.parse(v)})
|
488
|
+
property = CouchRest::Model::Property.new(:test, :type => Date, :init_method => Proc.new{|v| Date.parse(v)})
|
453
489
|
obj = property.build("2011-05-21")
|
454
490
|
obj.should eql(Date.new(2011, 05, 21))
|
455
491
|
end
|
@@ -463,14 +499,20 @@ describe "Property Class" do
|
|
463
499
|
|
464
500
|
describe "casting" do
|
465
501
|
it "should cast a value" do
|
466
|
-
property = CouchRest::Model::Property.new(:test, Date)
|
502
|
+
property = CouchRest::Model::Property.new(:test, :type => Date)
|
467
503
|
parent = mock("FooObject")
|
468
504
|
property.cast(parent, "2010-06-16").should eql(Date.new(2010, 6, 16))
|
469
505
|
property.cast_value(parent, "2010-06-16").should eql(Date.new(2010, 6, 16))
|
470
506
|
end
|
471
507
|
|
472
508
|
it "should cast an array of values" do
|
473
|
-
property = CouchRest::Model::Property.new(:test, [Date])
|
509
|
+
property = CouchRest::Model::Property.new(:test, :type => [Date])
|
510
|
+
parent = mock("FooObject")
|
511
|
+
property.cast(parent, ["2010-06-01", "2010-06-02"]).should eql([Date.new(2010, 6, 1), Date.new(2010, 6, 2)])
|
512
|
+
end
|
513
|
+
|
514
|
+
it "should cast an array of values with array option" do
|
515
|
+
property = CouchRest::Model::Property.new(:test, :type => Date, :array => true)
|
474
516
|
parent = mock("FooObject")
|
475
517
|
property.cast(parent, ["2010-06-01", "2010-06-02"]).should eql([Date.new(2010, 6, 1), Date.new(2010, 6, 2)])
|
476
518
|
end
|
@@ -481,30 +523,30 @@ describe "Property Class" do
|
|
481
523
|
end
|
482
524
|
|
483
525
|
it "should convert blank to nil" do
|
484
|
-
property = CouchRest::Model::Property.new(:test, String, :allow_blank => false)
|
526
|
+
property = CouchRest::Model::Property.new(:test, :type => String, :allow_blank => false)
|
485
527
|
property.cast(parent, "").should be_nil
|
486
528
|
end
|
487
529
|
|
488
530
|
it "should remove blank array entries" do
|
489
|
-
property = CouchRest::Model::Property.new(:test, [String], :allow_blank => false)
|
531
|
+
property = CouchRest::Model::Property.new(:test, :type => [String], :allow_blank => false)
|
490
532
|
property.cast(parent, ["", "foo"]).should eql(["foo"])
|
491
533
|
end
|
492
534
|
end
|
493
535
|
|
494
536
|
it "should set a CastedArray on array of Objects" do
|
495
|
-
property = CouchRest::Model::Property.new(:test, [Object])
|
537
|
+
property = CouchRest::Model::Property.new(:test, :type => [Object])
|
496
538
|
parent = mock("FooObject")
|
497
539
|
property.cast(parent, ["2010-06-01", "2010-06-02"]).class.should eql(CouchRest::Model::CastedArray)
|
498
540
|
end
|
499
541
|
|
500
542
|
it "should set a CastedArray on array of Strings" do
|
501
|
-
property = CouchRest::Model::Property.new(:test, [String])
|
543
|
+
property = CouchRest::Model::Property.new(:test, :type => [String])
|
502
544
|
parent = mock("FooObject")
|
503
545
|
property.cast(parent, ["2010-06-01", "2010-06-02"]).class.should eql(CouchRest::Model::CastedArray)
|
504
546
|
end
|
505
547
|
|
506
548
|
it "should allow instantion of model via CastedArray#build" do
|
507
|
-
property = CouchRest::Model::Property.new(:dates, [Date])
|
549
|
+
property = CouchRest::Model::Property.new(:dates, :type => [Date])
|
508
550
|
parent = Article.new
|
509
551
|
ary = property.cast(parent, [])
|
510
552
|
obj = ary.build(2011, 05, 21)
|
@@ -521,20 +563,20 @@ describe "Property Class" do
|
|
521
563
|
def initialize(val); self.ary = val; end
|
522
564
|
def as_json; ary; end
|
523
565
|
end
|
524
|
-
property = CouchRest::Model::Property.new(:test, prop)
|
566
|
+
property = CouchRest::Model::Property.new(:test, :type => prop)
|
525
567
|
parent = mock("FooClass")
|
526
568
|
cast = property.cast(parent, [1, 2])
|
527
569
|
cast.ary.should eql([1, 2])
|
528
570
|
end
|
529
571
|
|
530
572
|
it "should set parent as casted_by object in CastedArray" do
|
531
|
-
property = CouchRest::Model::Property.new(:test, [Object])
|
573
|
+
property = CouchRest::Model::Property.new(:test, :type => [Object])
|
532
574
|
parent = mock("FooObject")
|
533
575
|
property.cast(parent, ["2010-06-01", "2010-06-02"]).casted_by.should eql(parent)
|
534
576
|
end
|
535
577
|
|
536
578
|
it "should set casted_by on new value" do
|
537
|
-
property = CouchRest::Model::Property.new(:test, CatToy)
|
579
|
+
property = CouchRest::Model::Property.new(:test, :type => CatToy)
|
538
580
|
parent = mock("CatObject")
|
539
581
|
cast = property.cast(parent, {:name => 'catnip'})
|
540
582
|
cast.casted_by.should eql(parent)
|
@@ -0,0 +1,31 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require "spec_helper"
|
3
|
+
|
4
|
+
describe "ActiveModel Translations" do
|
5
|
+
|
6
|
+
describe ".human_attribute_name" do
|
7
|
+
it "should provide translation" do
|
8
|
+
Card.human_attribute_name(:first_name).should eql("First name")
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
describe ".i18n_scope" do
|
13
|
+
it "should provide activemodel default" do
|
14
|
+
Card.i18n_scope.should eql(:couchrest)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
describe ".lookup_ancestors" do
|
19
|
+
it "should provide basic lookup" do
|
20
|
+
Cat.lookup_ancestors.should eql([Cat])
|
21
|
+
end
|
22
|
+
|
23
|
+
it "should provide lookup with ancestors" do
|
24
|
+
ChildCat.lookup_ancestors.should eql([ChildCat, Cat])
|
25
|
+
end
|
26
|
+
|
27
|
+
it "should provide Base if request directly" do
|
28
|
+
CouchRest::Model::Base.lookup_ancestors.should eql([CouchRest::Model::Base])
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
data/spec/unit/typecast_spec.rb
CHANGED
@@ -69,6 +69,20 @@ describe "Type Casting" do
|
|
69
69
|
end
|
70
70
|
end
|
71
71
|
|
72
|
+
describe "when type primitive is a Symbol" do
|
73
|
+
it "keeps symbol value unchanged" do
|
74
|
+
value = :a_symbol
|
75
|
+
@course.symbol = value
|
76
|
+
@course['symbol'].should equal(:a_symbol)
|
77
|
+
end
|
78
|
+
|
79
|
+
it "it casts to symbol representation of the value" do
|
80
|
+
@course.symbol = "a_symbol"
|
81
|
+
@course['symbol'].should equal(:a_symbol)
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
|
72
86
|
describe 'when type primitive is a Float' do
|
73
87
|
it 'returns same value if a float' do
|
74
88
|
value = 24.0
|
@@ -166,10 +180,29 @@ describe "Type Casting" do
|
|
166
180
|
@course.estimate.should eql(24.35)
|
167
181
|
end
|
168
182
|
|
169
|
-
|
170
|
-
|
183
|
+
it "should handle numbers with unit strings" do
|
184
|
+
@course.estimate = "23.21 points"
|
185
|
+
@course['estimate'].should eql(23.21)
|
186
|
+
end
|
187
|
+
|
188
|
+
[ '', 'string', ' foo ' ].each do |value|
|
189
|
+
it "should typecast string without a number to nil (#{value.inspect})" do
|
190
|
+
@course.estimate = value
|
191
|
+
@course['estimate'].should be_nil
|
192
|
+
end
|
193
|
+
end
|
194
|
+
|
195
|
+
[ '00.0', '0.', '-.0' ].each do |value|
|
196
|
+
it "should typecast strings with strange numbers to zero (#{value.inspect})" do
|
197
|
+
@course.estimate = value
|
198
|
+
@course['estimate'].should eql(0.0)
|
199
|
+
end
|
200
|
+
end
|
201
|
+
|
202
|
+
[ Object.new, true ].each do |value|
|
203
|
+
it "should not typecast non-numeric value that won't respond to #to_f (#{value.inspect})" do
|
171
204
|
@course.estimate = value
|
172
|
-
@course['estimate'].should equal(
|
205
|
+
@course['estimate'].should equal(nil)
|
173
206
|
end
|
174
207
|
end
|
175
208
|
|
@@ -257,12 +290,37 @@ describe "Type Casting" do
|
|
257
290
|
@course['hours'].should eql(24)
|
258
291
|
end
|
259
292
|
|
260
|
-
|
261
|
-
|
293
|
+
it "should handle numbers with string units" do
|
294
|
+
@course.hours = "23 hours"
|
295
|
+
@course['hours'].should eql(23)
|
296
|
+
end
|
297
|
+
|
298
|
+
it "should typecast an empty string to nil" do
|
299
|
+
@course.hours = ""
|
300
|
+
@course['hours'].should be_nil
|
301
|
+
end
|
302
|
+
|
303
|
+
[ '', 'string', ' foo ' ].each do |value|
|
304
|
+
it "should typecast string without a number to nil (#{value.inspect})" do
|
262
305
|
@course.hours = value
|
263
|
-
@course['hours'].should
|
306
|
+
@course['hours'].should be_nil
|
264
307
|
end
|
265
308
|
end
|
309
|
+
|
310
|
+
[ '00.0', '0.', '-.0' ].each do |value|
|
311
|
+
it "should typecast strings with strange numbers to zero (#{value.inspect})" do
|
312
|
+
@course.hours = value
|
313
|
+
@course['hours'].should eql(0)
|
314
|
+
end
|
315
|
+
end
|
316
|
+
|
317
|
+
[ Object.new, true ].each do |value|
|
318
|
+
it "should not typecast non-numeric value that won't respond to #to_i (#{value.inspect})" do
|
319
|
+
@course.hours = value
|
320
|
+
@course['hours'].should equal(nil)
|
321
|
+
end
|
322
|
+
end
|
323
|
+
|
266
324
|
end
|
267
325
|
|
268
326
|
describe 'when type primitive is a BigDecimal' do
|
@@ -347,12 +405,37 @@ describe "Type Casting" do
|
|
347
405
|
@course['profit'].should eql(BigDecimal('24.35'))
|
348
406
|
end
|
349
407
|
|
350
|
-
|
351
|
-
|
408
|
+
it "should handle numbers with strings" do
|
409
|
+
@course.profit = "22.23 euros"
|
410
|
+
@course['profit'].should eql(BigDecimal('22.23'))
|
411
|
+
end
|
412
|
+
|
413
|
+
it "should typecast an empty string to nil" do
|
414
|
+
@course.profit = ""
|
415
|
+
@course['profit'].should be_nil
|
416
|
+
end
|
417
|
+
|
418
|
+
[ '', 'string', ' foo ' ].each do |value|
|
419
|
+
it "should typecast string without a number to nil (#{value.inspect})" do
|
352
420
|
@course.profit = value
|
353
|
-
@course['profit'].should
|
421
|
+
@course['profit'].should be_nil
|
354
422
|
end
|
355
423
|
end
|
424
|
+
|
425
|
+
[ '00.0', '0.', '-.0' ].each do |value|
|
426
|
+
it "should typecast strings with strange numbers to zero (#{value.inspect})" do
|
427
|
+
@course.profit = value
|
428
|
+
@course['profit'].should eql(0.0)
|
429
|
+
end
|
430
|
+
end
|
431
|
+
|
432
|
+
[ Object.new, true ].each do |value|
|
433
|
+
it "should typecast non-numeric value that won't respond to to_d (#{value.inspect}) as nil" do
|
434
|
+
@course.profit = value
|
435
|
+
@course['profit'].should equal(nil)
|
436
|
+
end
|
437
|
+
end
|
438
|
+
|
356
439
|
end
|
357
440
|
|
358
441
|
describe 'when type primitive is a DateTime' do
|
@@ -387,7 +470,7 @@ describe "Type Casting" do
|
|
387
470
|
|
388
471
|
it 'does not typecast non-datetime values' do
|
389
472
|
@course.updated_at = 'not-datetime'
|
390
|
-
@course['updated_at'].should
|
473
|
+
@course['updated_at'].should be_nil
|
391
474
|
end
|
392
475
|
end
|
393
476
|
|
@@ -419,7 +502,7 @@ describe "Type Casting" do
|
|
419
502
|
|
420
503
|
it 'does not typecast non-date values' do
|
421
504
|
@course.started_on = 'not-date'
|
422
|
-
@course['started_on'].should
|
505
|
+
@course['started_on'].should be_nil
|
423
506
|
end
|
424
507
|
end
|
425
508
|
|
@@ -477,12 +560,9 @@ describe "Type Casting" do
|
|
477
560
|
@course.ends_at.to_i.should eql(Time.utc(2011, 4, 1, 16, 50, 32).to_i)
|
478
561
|
end
|
479
562
|
|
480
|
-
|
481
|
-
|
482
|
-
|
483
|
-
@course.ends_at = 'not-time'
|
484
|
-
@course['ends_at'].should eql('not-time')
|
485
|
-
end
|
563
|
+
it 'does not typecast non-time values' do
|
564
|
+
@course.ends_at = 'not-time'
|
565
|
+
@course['ends_at'].should be_nil
|
486
566
|
end
|
487
567
|
end
|
488
568
|
|
@@ -500,7 +580,7 @@ describe "Type Casting" do
|
|
500
580
|
|
501
581
|
it 'does not typecast non-class values' do
|
502
582
|
@course.klass = 'NoClass'
|
503
|
-
@course['klass'].should
|
583
|
+
@course['klass'].should be_nil
|
504
584
|
end
|
505
585
|
end
|
506
586
|
|
@@ -523,7 +603,7 @@ describe "Type Casting" do
|
|
523
603
|
[ 'string', 2, 1.0, BigDecimal('1.0'), DateTime.now, Time.now, Date.today, Class, Object.new, ].each do |value|
|
524
604
|
it "does not typecast value #{value.inspect}" do
|
525
605
|
@course.active = value
|
526
|
-
@course['active'].should
|
606
|
+
@course['active'].should be_nil
|
527
607
|
end
|
528
608
|
end
|
529
609
|
|
@@ -0,0 +1,25 @@
|
|
1
|
+
|
2
|
+
require 'spec_helper'
|
3
|
+
|
4
|
+
describe CouchRest::Model::Utils::Migrate do
|
5
|
+
|
6
|
+
before :each do
|
7
|
+
@module = CouchRest::Model::Utils::Migrate
|
8
|
+
end
|
9
|
+
|
10
|
+
describe "#load_all_models" do
|
11
|
+
it "should not do anything if Rails is not available" do
|
12
|
+
@module.load_all_models
|
13
|
+
end
|
14
|
+
it "should detect if Rails is available and require models" do
|
15
|
+
Rails = mock()
|
16
|
+
Rails.stub!(:root).and_return("")
|
17
|
+
Dir.should_receive(:[]).with("app/models/**/*.rb").and_return(['failed_require'])
|
18
|
+
# we can't mock require, so just expect an error
|
19
|
+
expect {
|
20
|
+
@module.load_all_models
|
21
|
+
}.to raise_error(LoadError)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
metadata
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: couchrest_model
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0.0
|
5
|
-
prerelease:
|
4
|
+
version: 2.0.0
|
5
|
+
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- J. Chris Anderson
|
@@ -13,7 +13,7 @@ authors:
|
|
13
13
|
autorequire:
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
|
-
date:
|
16
|
+
date: 2013-10-04 00:00:00.000000000 Z
|
17
17
|
dependencies:
|
18
18
|
- !ruby/object:Gem::Dependency
|
19
19
|
name: couchrest
|
@@ -36,7 +36,7 @@ dependencies:
|
|
36
36
|
requirement: !ruby/object:Gem::Requirement
|
37
37
|
none: false
|
38
38
|
requirements:
|
39
|
-
- -
|
39
|
+
- - ! '>='
|
40
40
|
- !ruby/object:Gem::Version
|
41
41
|
version: '1.15'
|
42
42
|
type: :runtime
|
@@ -44,7 +44,7 @@ dependencies:
|
|
44
44
|
version_requirements: !ruby/object:Gem::Requirement
|
45
45
|
none: false
|
46
46
|
requirements:
|
47
|
-
- -
|
47
|
+
- - ! '>='
|
48
48
|
- !ruby/object:Gem::Version
|
49
49
|
version: '1.15'
|
50
50
|
- !ruby/object:Gem::Dependency
|
@@ -52,7 +52,7 @@ dependencies:
|
|
52
52
|
requirement: !ruby/object:Gem::Requirement
|
53
53
|
none: false
|
54
54
|
requirements:
|
55
|
-
- -
|
55
|
+
- - ! '>='
|
56
56
|
- !ruby/object:Gem::Version
|
57
57
|
version: '3.0'
|
58
58
|
type: :runtime
|
@@ -60,7 +60,7 @@ dependencies:
|
|
60
60
|
version_requirements: !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
|
-
- -
|
63
|
+
- - ! '>='
|
64
64
|
- !ruby/object:Gem::Version
|
65
65
|
version: '3.0'
|
66
66
|
- !ruby/object:Gem::Dependency
|
@@ -68,7 +68,7 @@ dependencies:
|
|
68
68
|
requirement: !ruby/object:Gem::Requirement
|
69
69
|
none: false
|
70
70
|
requirements:
|
71
|
-
- -
|
71
|
+
- - ! '>='
|
72
72
|
- !ruby/object:Gem::Version
|
73
73
|
version: 0.3.22
|
74
74
|
type: :runtime
|
@@ -76,7 +76,7 @@ dependencies:
|
|
76
76
|
version_requirements: !ruby/object:Gem::Requirement
|
77
77
|
none: false
|
78
78
|
requirements:
|
79
|
-
- -
|
79
|
+
- - ! '>='
|
80
80
|
- !ruby/object:Gem::Version
|
81
81
|
version: 0.3.22
|
82
82
|
- !ruby/object:Gem::Dependency
|
@@ -144,13 +144,29 @@ dependencies:
|
|
144
144
|
- !ruby/object:Gem::Version
|
145
145
|
version: 0.8.0
|
146
146
|
- !ruby/object:Gem::Dependency
|
147
|
-
name:
|
147
|
+
name: activemodel
|
148
|
+
requirement: !ruby/object:Gem::Requirement
|
149
|
+
none: false
|
150
|
+
requirements:
|
151
|
+
- - ! '>='
|
152
|
+
- !ruby/object:Gem::Version
|
153
|
+
version: '4.0'
|
154
|
+
type: :development
|
155
|
+
prerelease: false
|
156
|
+
version_requirements: !ruby/object:Gem::Requirement
|
157
|
+
none: false
|
158
|
+
requirements:
|
159
|
+
- - ! '>='
|
160
|
+
- !ruby/object:Gem::Version
|
161
|
+
version: '4.0'
|
162
|
+
- !ruby/object:Gem::Dependency
|
163
|
+
name: kaminari
|
148
164
|
requirement: !ruby/object:Gem::Requirement
|
149
165
|
none: false
|
150
166
|
requirements:
|
151
167
|
- - ~>
|
152
168
|
- !ruby/object:Gem::Version
|
153
|
-
version:
|
169
|
+
version: 0.14.1
|
154
170
|
type: :development
|
155
171
|
prerelease: false
|
156
172
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -158,7 +174,7 @@ dependencies:
|
|
158
174
|
requirements:
|
159
175
|
- - ~>
|
160
176
|
- !ruby/object:Gem::Version
|
161
|
-
version:
|
177
|
+
version: 0.14.1
|
162
178
|
description: CouchRest Model provides aditional features to the standard CouchRest
|
163
179
|
Document class such as properties, view designs, associations, callbacks, typecasting
|
164
180
|
and validations.
|
@@ -172,6 +188,7 @@ extra_rdoc_files:
|
|
172
188
|
files:
|
173
189
|
- .gitignore
|
174
190
|
- .rspec
|
191
|
+
- .travis.yml
|
175
192
|
- Gemfile
|
176
193
|
- LICENSE
|
177
194
|
- README.md
|
@@ -193,22 +210,24 @@ files:
|
|
193
210
|
- lib/couchrest/model/connection.rb
|
194
211
|
- lib/couchrest/model/core_extensions/hash.rb
|
195
212
|
- lib/couchrest/model/core_extensions/time_parsing.rb
|
213
|
+
- lib/couchrest/model/design.rb
|
196
214
|
- lib/couchrest/model/designs.rb
|
197
|
-
- lib/couchrest/model/designs/
|
215
|
+
- lib/couchrest/model/designs/design_mapper.rb
|
198
216
|
- lib/couchrest/model/designs/view.rb
|
199
217
|
- lib/couchrest/model/dirty.rb
|
200
218
|
- lib/couchrest/model/document_queries.rb
|
201
219
|
- lib/couchrest/model/embeddable.rb
|
202
220
|
- lib/couchrest/model/errors.rb
|
203
221
|
- lib/couchrest/model/extended_attachments.rb
|
204
|
-
- lib/couchrest/model/migrate.rb
|
205
222
|
- lib/couchrest/model/persistence.rb
|
206
223
|
- lib/couchrest/model/properties.rb
|
207
224
|
- lib/couchrest/model/property.rb
|
208
225
|
- lib/couchrest/model/property_protection.rb
|
209
226
|
- lib/couchrest/model/proxyable.rb
|
210
227
|
- lib/couchrest/model/support/couchrest_database.rb
|
228
|
+
- lib/couchrest/model/translation.rb
|
211
229
|
- lib/couchrest/model/typecast.rb
|
230
|
+
- lib/couchrest/model/utils/migrate.rb
|
212
231
|
- lib/couchrest/model/validations.rb
|
213
232
|
- lib/couchrest/model/validations/casted_model.rb
|
214
233
|
- lib/couchrest/model/validations/locale/en.yml
|
@@ -232,6 +251,7 @@ files:
|
|
232
251
|
- spec/fixtures/models/cat.rb
|
233
252
|
- spec/fixtures/models/client.rb
|
234
253
|
- spec/fixtures/models/course.rb
|
254
|
+
- spec/fixtures/models/designs.rb
|
235
255
|
- spec/fixtures/models/event.rb
|
236
256
|
- spec/fixtures/models/invoice.rb
|
237
257
|
- spec/fixtures/models/key_chain.rb
|
@@ -259,7 +279,8 @@ files:
|
|
259
279
|
- spec/unit/configuration_spec.rb
|
260
280
|
- spec/unit/connection_spec.rb
|
261
281
|
- spec/unit/core_extensions/time_parsing.rb
|
262
|
-
- spec/unit/
|
282
|
+
- spec/unit/design_spec.rb
|
283
|
+
- spec/unit/designs/design_mapper_spec.rb
|
263
284
|
- spec/unit/designs/view_spec.rb
|
264
285
|
- spec/unit/designs_spec.rb
|
265
286
|
- spec/unit/dirty_spec.rb
|
@@ -270,7 +291,9 @@ files:
|
|
270
291
|
- spec/unit/property_spec.rb
|
271
292
|
- spec/unit/proxyable_spec.rb
|
272
293
|
- spec/unit/subclass_spec.rb
|
294
|
+
- spec/unit/translations_spec.rb
|
273
295
|
- spec/unit/typecast_spec.rb
|
296
|
+
- spec/unit/utils/migrate_spec.rb
|
274
297
|
- spec/unit/validations_spec.rb
|
275
298
|
homepage: http://github.com/couchrest/couchrest_model
|
276
299
|
licenses: []
|
@@ -284,9 +307,6 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
284
307
|
- - ! '>='
|
285
308
|
- !ruby/object:Gem::Version
|
286
309
|
version: '0'
|
287
|
-
segments:
|
288
|
-
- 0
|
289
|
-
hash: 2665370531854453498
|
290
310
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
291
311
|
none: false
|
292
312
|
requirements:
|
@@ -310,6 +330,7 @@ test_files:
|
|
310
330
|
- spec/fixtures/models/cat.rb
|
311
331
|
- spec/fixtures/models/client.rb
|
312
332
|
- spec/fixtures/models/course.rb
|
333
|
+
- spec/fixtures/models/designs.rb
|
313
334
|
- spec/fixtures/models/event.rb
|
314
335
|
- spec/fixtures/models/invoice.rb
|
315
336
|
- spec/fixtures/models/key_chain.rb
|
@@ -337,7 +358,8 @@ test_files:
|
|
337
358
|
- spec/unit/configuration_spec.rb
|
338
359
|
- spec/unit/connection_spec.rb
|
339
360
|
- spec/unit/core_extensions/time_parsing.rb
|
340
|
-
- spec/unit/
|
361
|
+
- spec/unit/design_spec.rb
|
362
|
+
- spec/unit/designs/design_mapper_spec.rb
|
341
363
|
- spec/unit/designs/view_spec.rb
|
342
364
|
- spec/unit/designs_spec.rb
|
343
365
|
- spec/unit/dirty_spec.rb
|
@@ -348,5 +370,7 @@ test_files:
|
|
348
370
|
- spec/unit/property_spec.rb
|
349
371
|
- spec/unit/proxyable_spec.rb
|
350
372
|
- spec/unit/subclass_spec.rb
|
373
|
+
- spec/unit/translations_spec.rb
|
351
374
|
- spec/unit/typecast_spec.rb
|
375
|
+
- spec/unit/utils/migrate_spec.rb
|
352
376
|
- spec/unit/validations_spec.rb
|