validates_overlap 0.0.5 → 0.0.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.
data/README.rdoc CHANGED
@@ -21,3 +21,7 @@ without scope
21
21
 
22
22
  with scope
23
23
  validates :starts_at, :ends_at, :overlap => {:scope => "user_id"}
24
+
25
+ exclude edges
26
+ validates :starts_at, :ends_at, :overlap => {:exclude_edges => "starts_at"}
27
+ validates :starts_at, :ends_at, :overlap => {:exclude_edges => ["starts_at", "ends_at"]}
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.5
1
+ 0.0.6
@@ -62,10 +62,11 @@ class OverlapValidator < ActiveModel::EachValidator
62
62
  # Generate sql condition for time range cross
63
63
  def generate_overlap_sql_conditions(record)
64
64
  starts_at_attr, ends_at_attr = attributes_to_sql(record)
65
+ main_condition = condition_string(starts_at_attr, ends_at_attr)
65
66
  if record.new_record?
66
- self.sql_conditions = "#{ends_at_attr} >= :starts_at_value AND #{starts_at_attr} <= :ends_at_value"
67
+ self.sql_conditions = main_condition
67
68
  else
68
- self.sql_conditions = "#{ends_at_attr} >= :starts_at_value AND #{starts_at_attr} <= :ends_at_value AND #{record_table_name(record)}.id != #{record.id}"
69
+ self.sql_conditions = "#{main_condition} AND #{record_table_name(record)}.id != #{record.id}"
69
70
  end
70
71
  end
71
72
 
@@ -75,6 +76,14 @@ class OverlapValidator < ActiveModel::EachValidator
75
76
  starts_at_value, ends_at_value = resolve_values_from_attributes(record)
76
77
  self.sql_values = {:starts_at_value => starts_at_value, :ends_at_value => ends_at_value}
77
78
  end
79
+
80
+ # Return the condition string depend on exclude_edges option.
81
+ def condition_string(starts_at_attr, ends_at_attr)
82
+ except_option = Array(options[:exclude_edges]).map(&:to_s)
83
+ starts_at_sign = except_option.include?(starts_at_attr.split(".").last) ? "<" : "<="
84
+ ends_at_sign = except_option.include?(ends_at_attr.split(".").last) ? ">" : ">="
85
+ "#{ends_at_attr} #{ends_at_sign} :starts_at_value AND #{starts_at_attr} #{starts_at_sign} :ends_at_value"
86
+ end
78
87
 
79
88
 
80
89
  # Add attributes and values to sql conditions.
@@ -0,0 +1,3 @@
1
+ class EndOverlapMeeting < ActiveRecord::Base
2
+ validates :starts_at, :ends_at, :overlap => {:exclude_edges => :ends_at}
3
+ end
@@ -0,0 +1,3 @@
1
+ class StartEndOverlapMeeting < ActiveRecord::Base
2
+ validates :starts_at, :ends_at, :overlap => {:exclude_edges => [:starts_at, :ends_at]}
3
+ end
@@ -0,0 +1,3 @@
1
+ class StartOverlapMeeting < ActiveRecord::Base
2
+ validates :starts_at, :ends_at, :overlap => {:exclude_edges => :starts_at}
3
+ end
@@ -0,0 +1,13 @@
1
+ class CreateEndOverlapMeetings < ActiveRecord::Migration
2
+ def self.up
3
+ create_table :end_overlap_meetings do |t|
4
+ t.date :starts_at
5
+ t.date :ends_at
6
+ t.timestamps
7
+ end
8
+ end
9
+
10
+ def self.down
11
+ drop_table :end_overlap_meetings
12
+ end
13
+ end
@@ -0,0 +1,13 @@
1
+ class CreateStartOverlapMeetings < ActiveRecord::Migration
2
+ def self.up
3
+ create_table :start_overlap_meetings do |t|
4
+ t.date :starts_at
5
+ t.date :ends_at
6
+ t.timestamps
7
+ end
8
+ end
9
+
10
+ def self.down
11
+ drop_table :start_overlap_meetings
12
+ end
13
+ end
@@ -0,0 +1,13 @@
1
+ class CreateStartEndOverlapMeetings < ActiveRecord::Migration
2
+ def self.up
3
+ create_table :start_end_overlap_meetings do |t|
4
+ t.date :starts_at
5
+ t.date :ends_at
6
+ t.timestamps
7
+ end
8
+ end
9
+
10
+ def self.down
11
+ drop_table :start_end_overlap_meetings
12
+ end
13
+ end
@@ -11,7 +11,14 @@
11
11
  #
12
12
  # It's strongly recommended to check this file into your version control system.
13
13
 
14
- ActiveRecord::Schema.define(:version => 20110407060725) do
14
+ ActiveRecord::Schema.define(:version => 20120509131032) do
15
+
16
+ create_table "end_overlap_meetings", :force => true do |t|
17
+ t.date "starts_at"
18
+ t.date "ends_at"
19
+ t.datetime "created_at", :null => false
20
+ t.datetime "updated_at", :null => false
21
+ end
15
22
 
16
23
  create_table "meetings", :force => true do |t|
17
24
  t.date "starts_at"
@@ -20,6 +27,20 @@ ActiveRecord::Schema.define(:version => 20110407060725) do
20
27
  t.datetime "updated_at", :null => false
21
28
  end
22
29
 
30
+ create_table "start_end_overlap_meetings", :force => true do |t|
31
+ t.date "starts_at"
32
+ t.date "ends_at"
33
+ t.datetime "created_at", :null => false
34
+ t.datetime "updated_at", :null => false
35
+ end
36
+
37
+ create_table "start_overlap_meetings", :force => true do |t|
38
+ t.date "starts_at"
39
+ t.date "ends_at"
40
+ t.datetime "created_at", :null => false
41
+ t.datetime "updated_at", :null => false
42
+ end
43
+
23
44
  create_table "user_meetings", :force => true do |t|
24
45
  t.integer "user_id"
25
46
  t.date "starts_at"
@@ -0,0 +1,4 @@
1
+ Factory.define :end_overlap_meeting do |u|
2
+ u.starts_at '2011-01-05'.to_date
3
+ u.ends_at '2011-01-08'.to_date
4
+ end
@@ -0,0 +1,4 @@
1
+ Factory.define :start_end_overlap_meeting do |u|
2
+ u.starts_at '2011-01-05'.to_date
3
+ u.ends_at '2011-01-08'.to_date
4
+ end
@@ -0,0 +1,4 @@
1
+ Factory.define :start_overlap_meeting do |u|
2
+ u.starts_at '2011-01-05'.to_date
3
+ u.ends_at '2011-01-08'.to_date
4
+ end
@@ -0,0 +1,52 @@
1
+ require_relative '../../../spec_helper'
2
+ require_relative '../factories/end_overlap_meeting'
3
+
4
+ describe EndOverlapMeeting do
5
+
6
+ before(:all) do
7
+ EndOverlapMeeting.delete_all
8
+ end
9
+
10
+ it "create meeting" do
11
+ lambda {
12
+ Factory(:end_overlap_meeting)
13
+ }.should change(EndOverlapMeeting, :count).by(1)
14
+ end
15
+
16
+ context "Validation with exclude edges ends_at" do
17
+ @valid_times = {
18
+ "starts at time of end and ends after" => ['2011-01-08'.to_date, '2011-01-19'.to_date]
19
+ }
20
+
21
+ @not_valid_times = {
22
+ "has same starts_at and ends_at" => ['2011-01-05'.to_date, '2011-01-08'.to_date],
23
+ "starts before starts_at and ends after ends_at" => ['2011-01-04'.to_date, '2011-01-09'.to_date],
24
+ "starts before starts_at and ends inside" => ['2011-01-04'.to_date, '2011-01-06'.to_date],
25
+ "starts inside and ends after ends_at" => ['2011-01-06'.to_date, '2011-01-09'.to_date],
26
+ "starts inside and ends inside" => ['2011-01-06'.to_date, '2011-01-07'.to_date],
27
+ "starts at same time and ends inside" => ['2011-01-05'.to_date, '2011-01-07'.to_date],
28
+ "starts inside and ends at same time" => ['2011-01-06'.to_date, '2011-01-08'.to_date],
29
+ "starts before and ends at time of start" => ['2011-01-03'.to_date, '2011-01-05'.to_date],
30
+ }
31
+
32
+ @not_valid_times.each do |description, time_range|
33
+ it "is not valid if exists meeting which #{description}" do
34
+ meeting = Factory.build(:end_overlap_meeting, :starts_at => time_range.first, :ends_at => time_range.last)
35
+ meeting.should_not be_valid
36
+ meeting.errors[:starts_at].should_not be_empty
37
+ meeting.errors[:ends_at].should be_empty
38
+ end
39
+ end
40
+
41
+ @valid_times.each do |description, time_range|
42
+ it "is valid if exists meeting which #{description}" do
43
+ meeting = Factory.build(:end_overlap_meeting, :starts_at => time_range.first, :ends_at => time_range.last)
44
+ meeting.should be_valid
45
+ meeting.errors[:starts_at].should be_empty
46
+ meeting.errors[:ends_at].should be_empty
47
+ end
48
+ end
49
+
50
+ end
51
+
52
+ end
@@ -0,0 +1,52 @@
1
+ require_relative '../../../spec_helper'
2
+ require_relative '../factories/start_end_overlap_meeting'
3
+
4
+ describe StartEndOverlapMeeting do
5
+
6
+ before(:all) do
7
+ StartEndOverlapMeeting.delete_all
8
+ end
9
+
10
+ it "create meeting" do
11
+ lambda {
12
+ Factory(:start_end_overlap_meeting)
13
+ }.should change(StartEndOverlapMeeting, :count).by(1)
14
+ end
15
+
16
+ context "Validation with exclude edges starts_at, ends_at" do
17
+ @valid_times = {
18
+ "starts before and ends at time of start" => ['2011-01-03'.to_date, '2011-01-05'.to_date],
19
+ "starts at time of end and ends after" => ['2011-01-08'.to_date, '2011-01-19'.to_date]
20
+ }
21
+
22
+ @not_valid_times = {
23
+ "has same starts_at and ends_at" => ['2011-01-05'.to_date, '2011-01-08'.to_date],
24
+ "starts before starts_at and ends after ends_at" => ['2011-01-04'.to_date, '2011-01-09'.to_date],
25
+ "starts before starts_at and ends inside" => ['2011-01-04'.to_date, '2011-01-06'.to_date],
26
+ "starts inside and ends after ends_at" => ['2011-01-06'.to_date, '2011-01-09'.to_date],
27
+ "starts inside and ends inside" => ['2011-01-06'.to_date, '2011-01-07'.to_date],
28
+ "starts at same time and ends inside" => ['2011-01-05'.to_date, '2011-01-07'.to_date],
29
+ "starts inside and ends at same time" => ['2011-01-06'.to_date, '2011-01-08'.to_date],
30
+ }
31
+
32
+ @not_valid_times.each do |description, time_range|
33
+ it "is not valid if exists meeting which #{description}" do
34
+ meeting = Factory.build(:start_end_overlap_meeting, :starts_at => time_range.first, :ends_at => time_range.last)
35
+ meeting.should_not be_valid
36
+ meeting.errors[:starts_at].should_not be_empty
37
+ meeting.errors[:ends_at].should be_empty
38
+ end
39
+ end
40
+
41
+ @valid_times.each do |description, time_range|
42
+ it "is valid if exists meeting which #{description}" do
43
+ meeting = Factory.build(:start_end_overlap_meeting, :starts_at => time_range.first, :ends_at => time_range.last)
44
+ meeting.should be_valid
45
+ meeting.errors[:starts_at].should be_empty
46
+ meeting.errors[:ends_at].should be_empty
47
+ end
48
+ end
49
+
50
+ end
51
+
52
+ end
@@ -0,0 +1,52 @@
1
+ require_relative '../../../spec_helper'
2
+ require_relative '../factories/start_overlap_meeting'
3
+
4
+ describe StartOverlapMeeting do
5
+
6
+ before(:all) do
7
+ StartOverlapMeeting.delete_all
8
+ end
9
+
10
+ it "create meeting" do
11
+ lambda {
12
+ Factory(:start_overlap_meeting)
13
+ }.should change(StartOverlapMeeting, :count).by(1)
14
+ end
15
+
16
+ context "Validation with exclude edge starts_at" do
17
+ @valid_times = {
18
+ "starts before and ends at time of start" => ['2011-01-03'.to_date, '2011-01-05'.to_date],
19
+ }
20
+
21
+ @not_valid_times = {
22
+ "has same starts_at and ends_at" => ['2011-01-05'.to_date, '2011-01-08'.to_date],
23
+ "starts before starts_at and ends after ends_at" => ['2011-01-04'.to_date, '2011-01-09'.to_date],
24
+ "starts before starts_at and ends inside" => ['2011-01-04'.to_date, '2011-01-06'.to_date],
25
+ "starts inside and ends after ends_at" => ['2011-01-06'.to_date, '2011-01-09'.to_date],
26
+ "starts inside and ends inside" => ['2011-01-06'.to_date, '2011-01-07'.to_date],
27
+ "starts at same time and ends inside" => ['2011-01-05'.to_date, '2011-01-07'.to_date],
28
+ "starts inside and ends at same time" => ['2011-01-06'.to_date, '2011-01-08'.to_date],
29
+ "starts at time of end and ends after" => ['2011-01-08'.to_date, '2011-01-19'.to_date]
30
+ }
31
+
32
+ @not_valid_times.each do |description, time_range|
33
+ it "is not valid if exists meeting which #{description}" do
34
+ meeting = Factory.build(:start_overlap_meeting, :starts_at => time_range.first, :ends_at => time_range.last)
35
+ meeting.should_not be_valid
36
+ meeting.errors[:starts_at].should_not be_empty
37
+ meeting.errors[:ends_at].should be_empty
38
+ end
39
+ end
40
+
41
+ @valid_times.each do |description, time_range|
42
+ it "is valid if exists meeting which #{description}" do
43
+ meeting = Factory.build(:start_overlap_meeting, :starts_at => time_range.first, :ends_at => time_range.last)
44
+ meeting.should be_valid
45
+ meeting.errors[:starts_at].should be_empty
46
+ meeting.errors[:ends_at].should be_empty
47
+ end
48
+ end
49
+
50
+ end
51
+
52
+ end
data/spec/spec_helper.rb CHANGED
@@ -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
+ }
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "validates_overlap"
8
- s.version = "0.0.5"
8
+ s.version = "0.0.6"
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 = "2012-05-07"
12
+ s.date = "2012-05-13"
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 = [
@@ -28,7 +28,10 @@ Gem::Specification.new do |s|
28
28
  "spec/dummy/Rakefile",
29
29
  "spec/dummy/app/controllers/application_controller.rb",
30
30
  "spec/dummy/app/helpers/application_helper.rb",
31
+ "spec/dummy/app/models/end_overlap_meeting.rb",
31
32
  "spec/dummy/app/models/meeting.rb",
33
+ "spec/dummy/app/models/start_end_overlap_meeting.rb",
34
+ "spec/dummy/app/models/start_overlap_meeting.rb",
32
35
  "spec/dummy/app/models/user.rb",
33
36
  "spec/dummy/app/models/user_meeting.rb",
34
37
  "spec/dummy/app/views/layouts/application.html.erb",
@@ -50,6 +53,9 @@ Gem::Specification.new do |s|
50
53
  "spec/dummy/db/migrate/20110406082020_create_meetings.rb",
51
54
  "spec/dummy/db/migrate/20110406082053_create_users.rb",
52
55
  "spec/dummy/db/migrate/20110407060725_create_user_meetings.rb",
56
+ "spec/dummy/db/migrate/20120509130956_create_end_overlap_meetings.rb",
57
+ "spec/dummy/db/migrate/20120509131012_create_start_overlap_meetings.rb",
58
+ "spec/dummy/db/migrate/20120509131032_create_start_end_overlap_meetings.rb",
53
59
  "spec/dummy/db/schema.rb",
54
60
  "spec/dummy/public/404.html",
55
61
  "spec/dummy/public/422.html",
@@ -63,10 +69,16 @@ Gem::Specification.new do |s|
63
69
  "spec/dummy/public/javascripts/rails.js",
64
70
  "spec/dummy/public/stylesheets/.gitkeep",
65
71
  "spec/dummy/script/rails",
72
+ "spec/dummy/spec/factories/end_overlap_meeting.rb",
66
73
  "spec/dummy/spec/factories/meeting.rb",
74
+ "spec/dummy/spec/factories/start_end_overlap_meeting.rb",
75
+ "spec/dummy/spec/factories/start_overlap_meeting.rb",
67
76
  "spec/dummy/spec/factories/user.rb",
68
77
  "spec/dummy/spec/factories/user_meeting.rb",
78
+ "spec/dummy/spec/models/end_overlap_meeting_spec.rb",
69
79
  "spec/dummy/spec/models/meeting_spec.rb",
80
+ "spec/dummy/spec/models/start_end_overlap_meeting_spec.rb",
81
+ "spec/dummy/spec/models/start_overlap_meeting_spec.rb",
70
82
  "spec/dummy/spec/models/user_meeting_spec.rb",
71
83
  "spec/dummy/spec/models/user_spec.rb",
72
84
  "spec/spec_helper.rb",
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.0.5
4
+ version: 0.0.6
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-05-07 00:00:00.000000000 Z
12
+ date: 2012-05-13 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rails
16
- requirement: &70299388963720 !ruby/object:Gem::Requirement
16
+ requirement: &70310037153900 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 3.0.0
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70299388963720
24
+ version_requirements: *70310037153900
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: sqlite3
27
- requirement: &70299388985240 !ruby/object:Gem::Requirement
27
+ requirement: &70310037153420 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *70299388985240
35
+ version_requirements: *70310037153420
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: rspec-rails
38
- requirement: &70299388984160 !ruby/object:Gem::Requirement
38
+ requirement: &70310037152920 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: 2.0.0.beta
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *70299388984160
46
+ version_requirements: *70310037152920
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: factory_girl_rails
49
- requirement: &70299388983400 !ruby/object:Gem::Requirement
49
+ requirement: &70310037152400 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: '0'
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *70299388983400
57
+ version_requirements: *70310037152400
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: bundler
60
- requirement: &70299388982260 !ruby/object:Gem::Requirement
60
+ requirement: &70310037151840 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ! '>='
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: 1.0.0
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *70299388982260
68
+ version_requirements: *70310037151840
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: jeweler
71
- requirement: &70299388981120 !ruby/object:Gem::Requirement
71
+ requirement: &70310037151340 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ! '>='
@@ -76,7 +76,7 @@ dependencies:
76
76
  version: 1.5.2
77
77
  type: :development
78
78
  prerelease: false
79
- version_requirements: *70299388981120
79
+ version_requirements: *70310037151340
80
80
  description: It can be useful when you you are developing some app where you will
81
81
  work with meetings, events etc.
82
82
  email: robinbortlik@gmail.com
@@ -97,7 +97,10 @@ files:
97
97
  - spec/dummy/Rakefile
98
98
  - spec/dummy/app/controllers/application_controller.rb
99
99
  - spec/dummy/app/helpers/application_helper.rb
100
+ - spec/dummy/app/models/end_overlap_meeting.rb
100
101
  - spec/dummy/app/models/meeting.rb
102
+ - spec/dummy/app/models/start_end_overlap_meeting.rb
103
+ - spec/dummy/app/models/start_overlap_meeting.rb
101
104
  - spec/dummy/app/models/user.rb
102
105
  - spec/dummy/app/models/user_meeting.rb
103
106
  - spec/dummy/app/views/layouts/application.html.erb
@@ -119,6 +122,9 @@ files:
119
122
  - spec/dummy/db/migrate/20110406082020_create_meetings.rb
120
123
  - spec/dummy/db/migrate/20110406082053_create_users.rb
121
124
  - spec/dummy/db/migrate/20110407060725_create_user_meetings.rb
125
+ - spec/dummy/db/migrate/20120509130956_create_end_overlap_meetings.rb
126
+ - spec/dummy/db/migrate/20120509131012_create_start_overlap_meetings.rb
127
+ - spec/dummy/db/migrate/20120509131032_create_start_end_overlap_meetings.rb
122
128
  - spec/dummy/db/schema.rb
123
129
  - spec/dummy/public/404.html
124
130
  - spec/dummy/public/422.html
@@ -132,10 +138,16 @@ files:
132
138
  - spec/dummy/public/javascripts/rails.js
133
139
  - spec/dummy/public/stylesheets/.gitkeep
134
140
  - spec/dummy/script/rails
141
+ - spec/dummy/spec/factories/end_overlap_meeting.rb
135
142
  - spec/dummy/spec/factories/meeting.rb
143
+ - spec/dummy/spec/factories/start_end_overlap_meeting.rb
144
+ - spec/dummy/spec/factories/start_overlap_meeting.rb
136
145
  - spec/dummy/spec/factories/user.rb
137
146
  - spec/dummy/spec/factories/user_meeting.rb
147
+ - spec/dummy/spec/models/end_overlap_meeting_spec.rb
138
148
  - spec/dummy/spec/models/meeting_spec.rb
149
+ - spec/dummy/spec/models/start_end_overlap_meeting_spec.rb
150
+ - spec/dummy/spec/models/start_overlap_meeting_spec.rb
139
151
  - spec/dummy/spec/models/user_meeting_spec.rb
140
152
  - spec/dummy/spec/models/user_spec.rb
141
153
  - spec/spec_helper.rb
@@ -155,7 +167,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
155
167
  version: '0'
156
168
  segments:
157
169
  - 0
158
- hash: 4277930355415785959
170
+ hash: 486938746215204514
159
171
  required_rubygems_version: !ruby/object:Gem::Requirement
160
172
  none: false
161
173
  requirements: