validates_overlap 0.1.0 → 0.1.1
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/Gemfile +5 -8
- data/README.rdoc +31 -5
- data/Rakefile +1 -1
- data/VERSION +1 -1
- data/spec/dummy/spec/factories/end_overlap_meeting.rb +6 -4
- data/spec/dummy/spec/factories/meeting.rb +6 -4
- data/spec/dummy/spec/factories/position.rb +5 -3
- data/spec/dummy/spec/factories/start_end_overlap_meeting.rb +6 -4
- data/spec/dummy/spec/factories/start_overlap_meeting.rb +6 -4
- data/spec/dummy/spec/factories/time_slot.rb +5 -3
- data/spec/dummy/spec/factories/user.rb +4 -2
- data/spec/dummy/spec/factories/user_meeting.rb +12 -10
- data/spec/dummy/spec/models/end_overlap_meeting_spec.rb +6 -6
- data/spec/dummy/spec/models/meeting_spec.rb +6 -6
- data/spec/dummy/spec/models/position_spec.rb +11 -11
- data/spec/dummy/spec/models/start_end_overlap_meeting_spec.rb +7 -7
- data/spec/dummy/spec/models/start_overlap_meeting_spec.rb +7 -7
- data/spec/dummy/spec/models/time_slot_spec.rb +11 -11
- data/spec/dummy/spec/models/user_meeting_spec.rb +4 -4
- data/spec/dummy/spec/models/user_spec.rb +2 -2
- data/spec/spec_helper.rb +3 -3
- data/validates_overlap.gemspec +17 -17
- metadata +23 -23
data/Gemfile
CHANGED
@@ -3,12 +3,9 @@ source "http://rubygems.org"
|
|
3
3
|
gem "rails", ">= 3.0.0"
|
4
4
|
|
5
5
|
group :test, :development do
|
6
|
-
gem "sqlite3"
|
7
|
-
gem "rspec-rails",
|
8
|
-
gem "factory_girl_rails"
|
9
|
-
gem "bundler",
|
10
|
-
gem "jeweler",
|
6
|
+
gem "sqlite3", '~>1.3.7'
|
7
|
+
gem "rspec-rails", '~>2.12.2'
|
8
|
+
gem "factory_girl_rails", '~>4.2.1'
|
9
|
+
gem "bundler", '~>1.2.4'
|
10
|
+
gem "jeweler", '~>1.8.4'
|
11
11
|
end
|
12
|
-
# To use debugger (ruby-debug for Ruby 1.8.7+, ruby-debug19 for Ruby 1.9.2+)
|
13
|
-
# gem 'ruby-debug'
|
14
|
-
#gem 'ruby-debug19'
|
data/README.rdoc
CHANGED
@@ -12,16 +12,42 @@ If you are developing Rails 3 app, let say some meeting planner and you can't sa
|
|
12
12
|
=== Using
|
13
13
|
|
14
14
|
Add to your gemfile
|
15
|
-
|
15
|
+
```ruby
|
16
|
+
gem 'validates_overlap'
|
17
|
+
```
|
16
18
|
|
17
19
|
In your model
|
18
20
|
|
19
21
|
without scope
|
20
|
-
|
22
|
+
```ruby
|
23
|
+
validates :starts_at, :ends_at, :overlap => true
|
24
|
+
```
|
21
25
|
|
22
26
|
with scope
|
23
|
-
|
27
|
+
```ruby
|
28
|
+
validates :starts_at, :ends_at, :overlap => {:scope => "user_id"}
|
29
|
+
```
|
24
30
|
|
25
31
|
exclude edges
|
26
|
-
|
27
|
-
|
32
|
+
```ruby
|
33
|
+
validates :starts_at, :ends_at, :overlap => {:exclude_edges => "starts_at"}
|
34
|
+
validates :starts_at, :ends_at, :overlap => {:exclude_edges => ["starts_at", "ends_at"]}
|
35
|
+
```
|
36
|
+
|
37
|
+
with complicated relation relations
|
38
|
+
|
39
|
+
Exaple describes valildatation of user, positions and time slots.
|
40
|
+
User can't be assigned 2 times on position which is under time slot with time overlap.
|
41
|
+
|
42
|
+
```ruby
|
43
|
+
class Position < ActiveRecord::Base
|
44
|
+
belongs_to :time_slot
|
45
|
+
belongs_to :user
|
46
|
+
validates "time_slots.starts_at", "time_slots.ends_at",
|
47
|
+
:overlap => {
|
48
|
+
:query_options => {:includes => :time_slot},
|
49
|
+
:scope => { "positions.user_id" => proc{|position| position.user_id} }
|
50
|
+
}
|
51
|
+
end
|
52
|
+
|
53
|
+
```
|
data/Rakefile
CHANGED
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.1
|
@@ -1,4 +1,6 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
1
|
+
FactoryGirl.define do
|
2
|
+
factory :position do |u|
|
3
|
+
u.association(:user, :factory => :user)
|
4
|
+
u.association(:time_slot, :factory => :time_slot)
|
5
|
+
end
|
4
6
|
end
|
@@ -1,4 +1,6 @@
|
|
1
|
-
|
2
|
-
u
|
3
|
-
|
4
|
-
|
1
|
+
FactoryGirl.define do
|
2
|
+
factory :start_end_overlap_meeting do |u|
|
3
|
+
u.starts_at '2011-01-05'.to_date
|
4
|
+
u.ends_at '2011-01-08'.to_date
|
5
|
+
end
|
6
|
+
end
|
@@ -1,4 +1,6 @@
|
|
1
|
-
|
2
|
-
u
|
3
|
-
|
4
|
-
|
1
|
+
FactoryGirl.define do
|
2
|
+
factory :start_overlap_meeting do |u|
|
3
|
+
u.starts_at '2011-01-05'.to_date
|
4
|
+
u.ends_at '2011-01-08'.to_date
|
5
|
+
end
|
6
|
+
end
|
@@ -1,11 +1,13 @@
|
|
1
|
-
|
2
|
-
u
|
3
|
-
|
4
|
-
|
5
|
-
|
1
|
+
FactoryGirl.define do
|
2
|
+
factory :johns_meeting, :class => UserMeeting do |u|
|
3
|
+
u.starts_at '2011-01-05'.to_date
|
4
|
+
u.ends_at '2011-01-08'.to_date
|
5
|
+
u.user_id 1
|
6
|
+
end
|
6
7
|
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
end
|
8
|
+
factory :peters_meeting, :class => UserMeeting do |u|
|
9
|
+
u.starts_at '2011-01-05'.to_date
|
10
|
+
u.ends_at '2011-01-08'.to_date
|
11
|
+
u.user_id 2
|
12
|
+
end
|
13
|
+
end
|
@@ -9,7 +9,7 @@ describe EndOverlapMeeting do
|
|
9
9
|
|
10
10
|
it "create meeting" do
|
11
11
|
lambda {
|
12
|
-
|
12
|
+
FactoryGirl.create(:end_overlap_meeting)
|
13
13
|
}.should change(EndOverlapMeeting, :count).by(1)
|
14
14
|
end
|
15
15
|
|
@@ -17,7 +17,7 @@ describe EndOverlapMeeting do
|
|
17
17
|
@valid_times = {
|
18
18
|
"starts at time of end and ends after" => ['2011-01-08'.to_date, '2011-01-19'.to_date]
|
19
19
|
}
|
20
|
-
|
20
|
+
|
21
21
|
@not_valid_times = {
|
22
22
|
"has same starts_at and ends_at" => ['2011-01-05'.to_date, '2011-01-08'.to_date],
|
23
23
|
"starts before starts_at and ends after ends_at" => ['2011-01-04'.to_date, '2011-01-09'.to_date],
|
@@ -28,10 +28,10 @@ describe EndOverlapMeeting do
|
|
28
28
|
"starts inside and ends at same time" => ['2011-01-06'.to_date, '2011-01-08'.to_date],
|
29
29
|
"starts before and ends at time of start" => ['2011-01-03'.to_date, '2011-01-05'.to_date],
|
30
30
|
}
|
31
|
-
|
31
|
+
|
32
32
|
@not_valid_times.each do |description, time_range|
|
33
33
|
it "is not valid if exists meeting which #{description}" do
|
34
|
-
meeting =
|
34
|
+
meeting = FactoryGirl.build(:end_overlap_meeting, :starts_at => time_range.first, :ends_at => time_range.last)
|
35
35
|
meeting.should_not be_valid
|
36
36
|
meeting.errors[:starts_at].should_not be_empty
|
37
37
|
meeting.errors[:ends_at].should be_empty
|
@@ -40,7 +40,7 @@ describe EndOverlapMeeting do
|
|
40
40
|
|
41
41
|
@valid_times.each do |description, time_range|
|
42
42
|
it "is valid if exists meeting which #{description}" do
|
43
|
-
meeting =
|
43
|
+
meeting = FactoryGirl.build(:end_overlap_meeting, :starts_at => time_range.first, :ends_at => time_range.last)
|
44
44
|
meeting.should be_valid
|
45
45
|
meeting.errors[:starts_at].should be_empty
|
46
46
|
meeting.errors[:ends_at].should be_empty
|
@@ -49,4 +49,4 @@ describe EndOverlapMeeting do
|
|
49
49
|
|
50
50
|
end
|
51
51
|
|
52
|
-
end
|
52
|
+
end
|
@@ -9,15 +9,15 @@ describe Meeting do
|
|
9
9
|
|
10
10
|
it "create meeting" do
|
11
11
|
lambda {
|
12
|
-
|
12
|
+
FactoryGirl.create(:meeting)
|
13
13
|
}.should change(Meeting, :count).by(1)
|
14
14
|
end
|
15
15
|
|
16
16
|
context "Validation" do
|
17
|
-
|
17
|
+
|
18
18
|
OVERLAP_TIME_RANGES.each do |description, time_range|
|
19
19
|
it "is not valid if exists meeting which #{description}" do
|
20
|
-
meeting =
|
20
|
+
meeting = FactoryGirl.build(:meeting, :starts_at => time_range.first, :ends_at => time_range.last)
|
21
21
|
meeting.should_not be_valid
|
22
22
|
meeting.errors[:starts_at].should_not be_empty
|
23
23
|
meeting.errors[:ends_at].should be_empty
|
@@ -25,12 +25,12 @@ describe Meeting do
|
|
25
25
|
end
|
26
26
|
|
27
27
|
it " validate object which has not got overlap" do
|
28
|
-
meeting =
|
28
|
+
meeting = FactoryGirl.build(:meeting, :starts_at => "2011-01-09".to_date, :ends_at => "2011-01-11".to_date)
|
29
29
|
meeting.should be_valid
|
30
30
|
meeting.errors[:starts_at].should be_empty
|
31
31
|
meeting.errors[:ends_at].should be_empty
|
32
32
|
|
33
|
-
meeting =
|
33
|
+
meeting = FactoryGirl.build(:meeting, :starts_at => "2011-01-01".to_date, :ends_at => "2011-01-02".to_date)
|
34
34
|
meeting.should be_valid
|
35
35
|
meeting.errors[:starts_at].should be_empty
|
36
36
|
meeting.errors[:ends_at].should be_empty
|
@@ -38,4 +38,4 @@ describe Meeting do
|
|
38
38
|
|
39
39
|
end
|
40
40
|
|
41
|
-
end
|
41
|
+
end
|
@@ -13,28 +13,28 @@ describe Position do
|
|
13
13
|
|
14
14
|
it "create position" do
|
15
15
|
lambda {
|
16
|
-
|
16
|
+
FactoryGirl.create(:position)
|
17
17
|
}.should change(Position, :count).by(1)
|
18
18
|
end
|
19
19
|
|
20
20
|
context "Validation with scope and association" do
|
21
21
|
|
22
22
|
it "is not valid if exists time slot which have position with same person" do
|
23
|
-
time_slot1 =
|
24
|
-
time_slot2 =
|
25
|
-
user =
|
26
|
-
position1 =
|
27
|
-
position2 =
|
23
|
+
time_slot1 = FactoryGirl.create(:time_slot, :starts_at => "2012-10-11".to_date, :ends_at => "2012-10-13".to_date)
|
24
|
+
time_slot2 = FactoryGirl.create(:time_slot, :starts_at => "2012-10-12".to_date, :ends_at => "2012-10-13".to_date)
|
25
|
+
user = FactoryGirl.create(:user)
|
26
|
+
position1 = FactoryGirl.create(:position, :time_slot => time_slot1, :user => user)
|
27
|
+
position2 = FactoryGirl.build(:position, :time_slot => time_slot2, :user => user)
|
28
28
|
position2.should_not be_valid
|
29
29
|
position2.errors[:base].should_not be_empty
|
30
30
|
end
|
31
31
|
|
32
32
|
it "is be valid if exists time slot which have position with same person" do
|
33
|
-
time_slot1 =
|
34
|
-
time_slot2 =
|
35
|
-
user =
|
36
|
-
position1 =
|
37
|
-
position2 =
|
33
|
+
time_slot1 = FactoryGirl.create(:time_slot, :starts_at => "2012-10-11".to_date, :ends_at => "2012-10-13".to_date)
|
34
|
+
time_slot2 = FactoryGirl.create(:time_slot, :starts_at => "2012-10-14".to_date, :ends_at => "2012-10-15".to_date)
|
35
|
+
user = FactoryGirl.create(:user)
|
36
|
+
position1 = FactoryGirl.create(:position, :time_slot => time_slot1, :user => user)
|
37
|
+
position2 = FactoryGirl.build(:position, :time_slot => time_slot2, :user => user)
|
38
38
|
position2.should be_valid
|
39
39
|
position2.errors[:base].should be_empty
|
40
40
|
end
|
@@ -9,16 +9,16 @@ describe StartEndOverlapMeeting do
|
|
9
9
|
|
10
10
|
it "create meeting" do
|
11
11
|
lambda {
|
12
|
-
|
12
|
+
FactoryGirl.create(:start_end_overlap_meeting)
|
13
13
|
}.should change(StartEndOverlapMeeting, :count).by(1)
|
14
14
|
end
|
15
15
|
|
16
16
|
context "Validation with exclude edges starts_at, ends_at" do
|
17
17
|
@valid_times = {
|
18
|
-
"starts before and ends at time of start" => ['2011-01-03'.to_date, '2011-01-05'.to_date],
|
18
|
+
"starts before and ends at time of start" => ['2011-01-03'.to_date, '2011-01-05'.to_date],
|
19
19
|
"starts at time of end and ends after" => ['2011-01-08'.to_date, '2011-01-19'.to_date]
|
20
20
|
}
|
21
|
-
|
21
|
+
|
22
22
|
@not_valid_times = {
|
23
23
|
"has same starts_at and ends_at" => ['2011-01-05'.to_date, '2011-01-08'.to_date],
|
24
24
|
"starts before starts_at and ends after ends_at" => ['2011-01-04'.to_date, '2011-01-09'.to_date],
|
@@ -28,10 +28,10 @@ describe StartEndOverlapMeeting do
|
|
28
28
|
"starts at same time and ends inside" => ['2011-01-05'.to_date, '2011-01-07'.to_date],
|
29
29
|
"starts inside and ends at same time" => ['2011-01-06'.to_date, '2011-01-08'.to_date],
|
30
30
|
}
|
31
|
-
|
31
|
+
|
32
32
|
@not_valid_times.each do |description, time_range|
|
33
33
|
it "is not valid if exists meeting which #{description}" do
|
34
|
-
meeting =
|
34
|
+
meeting = FactoryGirl.build(:start_end_overlap_meeting, :starts_at => time_range.first, :ends_at => time_range.last)
|
35
35
|
meeting.should_not be_valid
|
36
36
|
meeting.errors[:starts_at].should_not be_empty
|
37
37
|
meeting.errors[:ends_at].should be_empty
|
@@ -40,7 +40,7 @@ describe StartEndOverlapMeeting do
|
|
40
40
|
|
41
41
|
@valid_times.each do |description, time_range|
|
42
42
|
it "is valid if exists meeting which #{description}" do
|
43
|
-
meeting =
|
43
|
+
meeting = FactoryGirl.build(:start_end_overlap_meeting, :starts_at => time_range.first, :ends_at => time_range.last)
|
44
44
|
meeting.should be_valid
|
45
45
|
meeting.errors[:starts_at].should be_empty
|
46
46
|
meeting.errors[:ends_at].should be_empty
|
@@ -49,4 +49,4 @@ describe StartEndOverlapMeeting do
|
|
49
49
|
|
50
50
|
end
|
51
51
|
|
52
|
-
end
|
52
|
+
end
|
@@ -9,15 +9,15 @@ describe StartOverlapMeeting do
|
|
9
9
|
|
10
10
|
it "create meeting" do
|
11
11
|
lambda {
|
12
|
-
|
12
|
+
FactoryGirl.create(:start_overlap_meeting)
|
13
13
|
}.should change(StartOverlapMeeting, :count).by(1)
|
14
14
|
end
|
15
15
|
|
16
16
|
context "Validation with exclude edge starts_at" do
|
17
17
|
@valid_times = {
|
18
|
-
"starts before and ends at time of start" => ['2011-01-03'.to_date, '2011-01-05'.to_date],
|
18
|
+
"starts before and ends at time of start" => ['2011-01-03'.to_date, '2011-01-05'.to_date],
|
19
19
|
}
|
20
|
-
|
20
|
+
|
21
21
|
@not_valid_times = {
|
22
22
|
"has same starts_at and ends_at" => ['2011-01-05'.to_date, '2011-01-08'.to_date],
|
23
23
|
"starts before starts_at and ends after ends_at" => ['2011-01-04'.to_date, '2011-01-09'.to_date],
|
@@ -28,10 +28,10 @@ describe StartOverlapMeeting do
|
|
28
28
|
"starts inside and ends at same time" => ['2011-01-06'.to_date, '2011-01-08'.to_date],
|
29
29
|
"starts at time of end and ends after" => ['2011-01-08'.to_date, '2011-01-19'.to_date]
|
30
30
|
}
|
31
|
-
|
31
|
+
|
32
32
|
@not_valid_times.each do |description, time_range|
|
33
33
|
it "is not valid if exists meeting which #{description}" do
|
34
|
-
meeting =
|
34
|
+
meeting = FactoryGirl.build(:start_overlap_meeting, :starts_at => time_range.first, :ends_at => time_range.last)
|
35
35
|
meeting.should_not be_valid
|
36
36
|
meeting.errors[:starts_at].should_not be_empty
|
37
37
|
meeting.errors[:ends_at].should be_empty
|
@@ -40,7 +40,7 @@ describe StartOverlapMeeting do
|
|
40
40
|
|
41
41
|
@valid_times.each do |description, time_range|
|
42
42
|
it "is valid if exists meeting which #{description}" do
|
43
|
-
meeting =
|
43
|
+
meeting = FactoryGirl.build(:start_overlap_meeting, :starts_at => time_range.first, :ends_at => time_range.last)
|
44
44
|
meeting.should be_valid
|
45
45
|
meeting.errors[:starts_at].should be_empty
|
46
46
|
meeting.errors[:ends_at].should be_empty
|
@@ -49,4 +49,4 @@ describe StartOverlapMeeting do
|
|
49
49
|
|
50
50
|
end
|
51
51
|
|
52
|
-
end
|
52
|
+
end
|
@@ -13,18 +13,18 @@ describe TimeSlot do
|
|
13
13
|
|
14
14
|
it "create time_slot" do
|
15
15
|
lambda {
|
16
|
-
|
16
|
+
FactoryGirl.create(:time_slot)
|
17
17
|
}.should change(TimeSlot, :count).by(1)
|
18
18
|
end
|
19
19
|
|
20
20
|
context "Validation with scope and association" do
|
21
21
|
|
22
22
|
it "is not valid if exists time slot which have position with same person" do
|
23
|
-
time_slot1 =
|
24
|
-
time_slot2 =
|
25
|
-
user =
|
26
|
-
position1 =
|
27
|
-
position2 =
|
23
|
+
time_slot1 = FactoryGirl.create(:time_slot, :starts_at => "2012-10-11".to_date, :ends_at => "2012-10-13".to_date)
|
24
|
+
time_slot2 = FactoryGirl.create(:time_slot, :starts_at => "2012-10-15".to_date, :ends_at => "2012-10-16".to_date)
|
25
|
+
user = FactoryGirl.create(:user)
|
26
|
+
position1 = FactoryGirl.create(:position, :time_slot => time_slot1, :user => user)
|
27
|
+
position2 = FactoryGirl.create(:position, :time_slot => time_slot2, :user => user)
|
28
28
|
time_slot2.reload
|
29
29
|
time_slot2.starts_at = "2012-10-12".to_date
|
30
30
|
time_slot2.should_not be_valid
|
@@ -32,11 +32,11 @@ describe TimeSlot do
|
|
32
32
|
end
|
33
33
|
|
34
34
|
it "is be valid if exists time slot which have position with same person" do
|
35
|
-
time_slot1 =
|
36
|
-
time_slot2 =
|
37
|
-
user =
|
38
|
-
position1 =
|
39
|
-
position2 =
|
35
|
+
time_slot1 = FactoryGirl.create(:time_slot, :starts_at => "2012-10-11".to_date, :ends_at => "2012-10-13".to_date)
|
36
|
+
time_slot2 = FactoryGirl.create(:time_slot, :starts_at => "2012-10-14".to_date, :ends_at => "2012-10-16".to_date)
|
37
|
+
user = FactoryGirl.create(:user)
|
38
|
+
position1 = FactoryGirl.create(:position, :time_slot => time_slot1, :user => user)
|
39
|
+
position2 = FactoryGirl.build(:position, :time_slot => time_slot2, :user => user)
|
40
40
|
time_slot2.starts_at = "2012-10-15".to_date
|
41
41
|
time_slot2.should be_valid
|
42
42
|
time_slot2.errors[:base].should be_empty
|
@@ -9,7 +9,7 @@ describe UserMeeting do
|
|
9
9
|
|
10
10
|
it "create johns meeting" do
|
11
11
|
lambda {
|
12
|
-
|
12
|
+
FactoryGirl.create(:johns_meeting)
|
13
13
|
}.should change(UserMeeting, :count).by(1)
|
14
14
|
end
|
15
15
|
|
@@ -17,7 +17,7 @@ describe UserMeeting do
|
|
17
17
|
|
18
18
|
OVERLAP_TIME_RANGES.each do |description, time_range|
|
19
19
|
it "is not valid if exists johns meeting which #{description}" do
|
20
|
-
meeting =
|
20
|
+
meeting = FactoryGirl.build(:johns_meeting, :starts_at => time_range.first, :ends_at => time_range.last)
|
21
21
|
meeting.should_not be_valid
|
22
22
|
meeting.errors[:starts_at].should_not be_empty
|
23
23
|
meeting.errors[:ends_at].should be_empty
|
@@ -26,7 +26,7 @@ describe UserMeeting do
|
|
26
26
|
|
27
27
|
OVERLAP_TIME_RANGES.each do |description, time_range|
|
28
28
|
it "is valid if exists johns meeting which #{description}" do
|
29
|
-
meeting =
|
29
|
+
meeting = FactoryGirl.build(:peters_meeting, :starts_at => time_range.first, :ends_at => time_range.last)
|
30
30
|
meeting.should be_valid
|
31
31
|
meeting.errors[:starts_at].should be_empty
|
32
32
|
meeting.errors[:ends_at].should be_empty
|
@@ -35,4 +35,4 @@ describe UserMeeting do
|
|
35
35
|
|
36
36
|
end
|
37
37
|
|
38
|
-
end
|
38
|
+
end
|
data/spec/spec_helper.rb
CHANGED
@@ -21,8 +21,8 @@ ActiveRecord::Migrator.migrate File.expand_path("../dummy/db/migrate/", __FILE__
|
|
21
21
|
Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f }
|
22
22
|
|
23
23
|
RSpec.configure do |config|
|
24
|
-
|
25
|
-
|
24
|
+
|
25
|
+
|
26
26
|
# Remove this line if you don't want RSpec's should and should_not
|
27
27
|
# methods or matchers
|
28
28
|
require 'rspec/expectations'
|
@@ -42,4 +42,4 @@ OVERLAP_TIME_RANGES = {
|
|
42
42
|
"starts inside and ends at same time" => ['2011-01-06'.to_date, '2011-01-08'.to_date],
|
43
43
|
"starts before and ends at time of start" => ['2011-01-03'.to_date, '2011-01-05'.to_date],
|
44
44
|
"starts at time of end and ends after" => ['2011-01-08'.to_date, '2011-01-19'.to_date]
|
45
|
-
}
|
45
|
+
}
|
data/validates_overlap.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "validates_overlap"
|
8
|
-
s.version = "0.1.
|
8
|
+
s.version = "0.1.1"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Robin Bortlik"]
|
12
|
-
s.date = "
|
12
|
+
s.date = "2013-02-19"
|
13
13
|
s.description = "It can be useful when you you are developing some app where you will work with meetings, events etc."
|
14
14
|
s.email = "robinbortlik@gmail.com"
|
15
15
|
s.extra_rdoc_files = [
|
@@ -102,26 +102,26 @@ Gem::Specification.new do |s|
|
|
102
102
|
|
103
103
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
104
104
|
s.add_runtime_dependency(%q<rails>, [">= 3.0.0"])
|
105
|
-
s.add_development_dependency(%q<sqlite3>, ["
|
106
|
-
s.add_development_dependency(%q<rspec-rails>, ["
|
107
|
-
s.add_development_dependency(%q<factory_girl_rails>, ["
|
108
|
-
s.add_development_dependency(%q<bundler>, ["
|
109
|
-
s.add_development_dependency(%q<jeweler>, ["
|
105
|
+
s.add_development_dependency(%q<sqlite3>, ["~> 1.3.7"])
|
106
|
+
s.add_development_dependency(%q<rspec-rails>, ["~> 2.12.2"])
|
107
|
+
s.add_development_dependency(%q<factory_girl_rails>, ["~> 4.2.1"])
|
108
|
+
s.add_development_dependency(%q<bundler>, ["~> 1.2.4"])
|
109
|
+
s.add_development_dependency(%q<jeweler>, ["~> 1.8.4"])
|
110
110
|
else
|
111
111
|
s.add_dependency(%q<rails>, [">= 3.0.0"])
|
112
|
-
s.add_dependency(%q<sqlite3>, ["
|
113
|
-
s.add_dependency(%q<rspec-rails>, ["
|
114
|
-
s.add_dependency(%q<factory_girl_rails>, ["
|
115
|
-
s.add_dependency(%q<bundler>, ["
|
116
|
-
s.add_dependency(%q<jeweler>, ["
|
112
|
+
s.add_dependency(%q<sqlite3>, ["~> 1.3.7"])
|
113
|
+
s.add_dependency(%q<rspec-rails>, ["~> 2.12.2"])
|
114
|
+
s.add_dependency(%q<factory_girl_rails>, ["~> 4.2.1"])
|
115
|
+
s.add_dependency(%q<bundler>, ["~> 1.2.4"])
|
116
|
+
s.add_dependency(%q<jeweler>, ["~> 1.8.4"])
|
117
117
|
end
|
118
118
|
else
|
119
119
|
s.add_dependency(%q<rails>, [">= 3.0.0"])
|
120
|
-
s.add_dependency(%q<sqlite3>, ["
|
121
|
-
s.add_dependency(%q<rspec-rails>, ["
|
122
|
-
s.add_dependency(%q<factory_girl_rails>, ["
|
123
|
-
s.add_dependency(%q<bundler>, ["
|
124
|
-
s.add_dependency(%q<jeweler>, ["
|
120
|
+
s.add_dependency(%q<sqlite3>, ["~> 1.3.7"])
|
121
|
+
s.add_dependency(%q<rspec-rails>, ["~> 2.12.2"])
|
122
|
+
s.add_dependency(%q<factory_girl_rails>, ["~> 4.2.1"])
|
123
|
+
s.add_dependency(%q<bundler>, ["~> 1.2.4"])
|
124
|
+
s.add_dependency(%q<jeweler>, ["~> 1.8.4"])
|
125
125
|
end
|
126
126
|
end
|
127
127
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: validates_overlap
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2013-02-19 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rails
|
@@ -32,81 +32,81 @@ dependencies:
|
|
32
32
|
requirement: !ruby/object:Gem::Requirement
|
33
33
|
none: false
|
34
34
|
requirements:
|
35
|
-
- -
|
35
|
+
- - ~>
|
36
36
|
- !ruby/object:Gem::Version
|
37
|
-
version:
|
37
|
+
version: 1.3.7
|
38
38
|
type: :development
|
39
39
|
prerelease: false
|
40
40
|
version_requirements: !ruby/object:Gem::Requirement
|
41
41
|
none: false
|
42
42
|
requirements:
|
43
|
-
- -
|
43
|
+
- - ~>
|
44
44
|
- !ruby/object:Gem::Version
|
45
|
-
version:
|
45
|
+
version: 1.3.7
|
46
46
|
- !ruby/object:Gem::Dependency
|
47
47
|
name: rspec-rails
|
48
48
|
requirement: !ruby/object:Gem::Requirement
|
49
49
|
none: false
|
50
50
|
requirements:
|
51
|
-
- -
|
51
|
+
- - ~>
|
52
52
|
- !ruby/object:Gem::Version
|
53
|
-
version: 2.
|
53
|
+
version: 2.12.2
|
54
54
|
type: :development
|
55
55
|
prerelease: false
|
56
56
|
version_requirements: !ruby/object:Gem::Requirement
|
57
57
|
none: false
|
58
58
|
requirements:
|
59
|
-
- -
|
59
|
+
- - ~>
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: 2.
|
61
|
+
version: 2.12.2
|
62
62
|
- !ruby/object:Gem::Dependency
|
63
63
|
name: factory_girl_rails
|
64
64
|
requirement: !ruby/object:Gem::Requirement
|
65
65
|
none: false
|
66
66
|
requirements:
|
67
|
-
- -
|
67
|
+
- - ~>
|
68
68
|
- !ruby/object:Gem::Version
|
69
|
-
version:
|
69
|
+
version: 4.2.1
|
70
70
|
type: :development
|
71
71
|
prerelease: false
|
72
72
|
version_requirements: !ruby/object:Gem::Requirement
|
73
73
|
none: false
|
74
74
|
requirements:
|
75
|
-
- -
|
75
|
+
- - ~>
|
76
76
|
- !ruby/object:Gem::Version
|
77
|
-
version:
|
77
|
+
version: 4.2.1
|
78
78
|
- !ruby/object:Gem::Dependency
|
79
79
|
name: bundler
|
80
80
|
requirement: !ruby/object:Gem::Requirement
|
81
81
|
none: false
|
82
82
|
requirements:
|
83
|
-
- -
|
83
|
+
- - ~>
|
84
84
|
- !ruby/object:Gem::Version
|
85
|
-
version: 1.
|
85
|
+
version: 1.2.4
|
86
86
|
type: :development
|
87
87
|
prerelease: false
|
88
88
|
version_requirements: !ruby/object:Gem::Requirement
|
89
89
|
none: false
|
90
90
|
requirements:
|
91
|
-
- -
|
91
|
+
- - ~>
|
92
92
|
- !ruby/object:Gem::Version
|
93
|
-
version: 1.
|
93
|
+
version: 1.2.4
|
94
94
|
- !ruby/object:Gem::Dependency
|
95
95
|
name: jeweler
|
96
96
|
requirement: !ruby/object:Gem::Requirement
|
97
97
|
none: false
|
98
98
|
requirements:
|
99
|
-
- -
|
99
|
+
- - ~>
|
100
100
|
- !ruby/object:Gem::Version
|
101
|
-
version: 1.
|
101
|
+
version: 1.8.4
|
102
102
|
type: :development
|
103
103
|
prerelease: false
|
104
104
|
version_requirements: !ruby/object:Gem::Requirement
|
105
105
|
none: false
|
106
106
|
requirements:
|
107
|
-
- -
|
107
|
+
- - ~>
|
108
108
|
- !ruby/object:Gem::Version
|
109
|
-
version: 1.
|
109
|
+
version: 1.8.4
|
110
110
|
description: It can be useful when you you are developing some app where you will
|
111
111
|
work with meetings, events etc.
|
112
112
|
email: robinbortlik@gmail.com
|
@@ -204,7 +204,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
204
204
|
version: '0'
|
205
205
|
segments:
|
206
206
|
- 0
|
207
|
-
hash:
|
207
|
+
hash: 3573107370652400302
|
208
208
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
209
209
|
none: false
|
210
210
|
requirements:
|