ndr_support 5.7.1 → 5.8.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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +9 -0
- data/README.md +1 -1
- data/code_safety.yml +38 -32
- data/lib/ndr_support/daterange.rb +17 -11
- data/lib/ndr_support/integer/julian_date_conversions.rb +0 -2
- data/lib/ndr_support/ourdate.rb +4 -2
- data/lib/ndr_support/ourtime.rb +2 -2
- data/lib/ndr_support/safe_path.rb +1 -0
- data/lib/ndr_support/string/conversions.rb +1 -1
- data/lib/ndr_support/utf8_encoding/control_characters.rb +0 -2
- data/lib/ndr_support/utf8_encoding/force_binary.rb +0 -2
- data/lib/ndr_support/utf8_encoding/object_support.rb +0 -2
- data/lib/ndr_support/version.rb +1 -1
- data/ndr_support.gemspec +3 -5
- data/test/daterange_test.rb +33 -5
- data/test/string/conversions_test.rb +3 -3
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 902f81bfb91abe5145aebc693e0f200b621db63183963e6c1bc0d2c7ef783c7e
|
4
|
+
data.tar.gz: 8bb91d0cfa4e64493330d9fa1eeb2765452e45547d751df43daf954da5a06ddd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b006ab6c6ea53f6ce5b47dc38fd290d1b9679995eacea4cbd269477e79e06bc2a1a752b273d707dce3a127e8c605b08fae8dfa6c1a606bb272f290521f66d971
|
7
|
+
data.tar.gz: 193a182ca039ba2113d1701c75511eb00bd8c4ce3e52e5797c7a6846c3963fdca392b3374faa79b9fdf78e25ad3514f87d1bbc2bc6545f68092f698b7ab93a33
|
data/CHANGELOG.md
CHANGED
@@ -1,6 +1,15 @@
|
|
1
1
|
## [Unreleased]
|
2
2
|
*no unreleased changes*
|
3
3
|
|
4
|
+
## 5.8.0 / 2021-04-19
|
5
|
+
## Added
|
6
|
+
|
7
|
+
* Add ability to disable date reversing in Daterange
|
8
|
+
|
9
|
+
## Fixed
|
10
|
+
* Support Ruby 2.6-3.0.
|
11
|
+
* Fix ruby warnings
|
12
|
+
|
4
13
|
## 5.7.1 / 2021-01-03
|
5
14
|
## Fixed
|
6
15
|
* Postcodeize old Newport postcodes
|
data/README.md
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# NdrSupport [](https://github.com/publichealthengland/ndr_support/actions?query=workflow%3Atest) [](https://rubygems.org/gems/ndr_support)
|
2
2
|
|
3
3
|
This is the Public Health England (PHE) National Disease Registers (NDR) Support ruby gem, providing:
|
4
4
|
|
data/code_safety.yml
CHANGED
@@ -1,5 +1,17 @@
|
|
1
1
|
---
|
2
2
|
file safety:
|
3
|
+
".github/CODEOWNERS":
|
4
|
+
comments:
|
5
|
+
reviewed_by: ollietulloch
|
6
|
+
safe_revision: 993f7719b57eb6ddd8dffa7230ed9ffc69f48749
|
7
|
+
".github/workflows/lint.yml":
|
8
|
+
comments:
|
9
|
+
reviewed_by: ollietulloch
|
10
|
+
safe_revision: 993f7719b57eb6ddd8dffa7230ed9ffc69f48749
|
11
|
+
".github/workflows/test.yml":
|
12
|
+
comments:
|
13
|
+
reviewed_by: ollietulloch
|
14
|
+
safe_revision: 993f7719b57eb6ddd8dffa7230ed9ffc69f48749
|
3
15
|
".gitignore":
|
4
16
|
comments:
|
5
17
|
reviewed_by: josh.pencheon
|
@@ -8,16 +20,10 @@ file safety:
|
|
8
20
|
comments:
|
9
21
|
reviewed_by: josh.pencheon
|
10
22
|
safe_revision: a02f14cbf1fc36fbaf820365fdedfdc9af326db1
|
11
|
-
".travis.yml":
|
12
|
-
comments: 'diff failed; reviewed whole file. Revision c88f5ac8c12fd657bb142144e0d3afaa7f9bc361:
|
13
|
-
Slack notification secret is public/private key encrypted, so not a disclosure
|
14
|
-
risk. As a secondary protection, it''s excluded from the .gem file by ndr_support.gemspec'
|
15
|
-
reviewed_by: josh.pencheon
|
16
|
-
safe_revision: 0cfcfac5ddcd721a67dcd23f04cbf6bc2278b922
|
17
23
|
CHANGELOG.md:
|
18
24
|
comments:
|
19
|
-
reviewed_by:
|
20
|
-
safe_revision:
|
25
|
+
reviewed_by: ollietulloch
|
26
|
+
safe_revision: b0dc20ab24516ac5c3ecb6c7078b56a20dd2fbd5
|
21
27
|
CODE_OF_CONDUCT.md:
|
22
28
|
comments:
|
23
29
|
reviewed_by: timgentry
|
@@ -36,8 +42,8 @@ file safety:
|
|
36
42
|
safe_revision: 90328cca8494539257e192a63b240a91c89f0616
|
37
43
|
README.md:
|
38
44
|
comments:
|
39
|
-
reviewed_by:
|
40
|
-
safe_revision:
|
45
|
+
reviewed_by: ollietulloch
|
46
|
+
safe_revision: 993f7719b57eb6ddd8dffa7230ed9ffc69f48749
|
41
47
|
Rakefile:
|
42
48
|
comments:
|
43
49
|
reviewed_by: timgentry
|
@@ -69,7 +75,7 @@ file safety:
|
|
69
75
|
lib/ndr_support/daterange.rb:
|
70
76
|
comments:
|
71
77
|
reviewed_by: ollietulloch
|
72
|
-
safe_revision:
|
78
|
+
safe_revision: 7b9c9525a5d9d319ddec75d5106c85a53f77e3f4
|
73
79
|
lib/ndr_support/hash.rb:
|
74
80
|
comments:
|
75
81
|
reviewed_by: pauleves
|
@@ -80,8 +86,8 @@ file safety:
|
|
80
86
|
safe_revision: 2685f35c907af6968a69eabb5ab9424b490d0f40
|
81
87
|
lib/ndr_support/integer/julian_date_conversions.rb:
|
82
88
|
comments:
|
83
|
-
reviewed_by:
|
84
|
-
safe_revision:
|
89
|
+
reviewed_by: ollietulloch
|
90
|
+
safe_revision: '09b3f97fb4c1afc88d0d070c39796b1f60c39d25'
|
85
91
|
lib/ndr_support/integer/rounding.rb:
|
86
92
|
comments:
|
87
93
|
reviewed_by: josh.pencheon
|
@@ -100,12 +106,12 @@ file safety:
|
|
100
106
|
safe_revision: 50a4293953f9ae227823c390b069a3ed4825074c
|
101
107
|
lib/ndr_support/ourdate.rb:
|
102
108
|
comments:
|
103
|
-
reviewed_by:
|
104
|
-
safe_revision:
|
109
|
+
reviewed_by: ollietulloch
|
110
|
+
safe_revision: '09b3f97fb4c1afc88d0d070c39796b1f60c39d25'
|
105
111
|
lib/ndr_support/ourtime.rb:
|
106
112
|
comments:
|
107
|
-
reviewed_by:
|
108
|
-
safe_revision:
|
113
|
+
reviewed_by: ollietulloch
|
114
|
+
safe_revision: '09b3f97fb4c1afc88d0d070c39796b1f60c39d25'
|
109
115
|
lib/ndr_support/password.rb:
|
110
116
|
comments: with input from brian.shand
|
111
117
|
reviewed_by: josh.pencheon
|
@@ -124,8 +130,8 @@ file safety:
|
|
124
130
|
safe_revision: 2685f35c907af6968a69eabb5ab9424b490d0f40
|
125
131
|
lib/ndr_support/safe_path.rb:
|
126
132
|
comments:
|
127
|
-
reviewed_by:
|
128
|
-
safe_revision:
|
133
|
+
reviewed_by: ollietulloch
|
134
|
+
safe_revision: '09b3f97fb4c1afc88d0d070c39796b1f60c39d25'
|
129
135
|
lib/ndr_support/string/cleaning.rb:
|
130
136
|
comments:
|
131
137
|
reviewed_by: brianshand
|
@@ -133,7 +139,7 @@ file safety:
|
|
133
139
|
lib/ndr_support/string/conversions.rb:
|
134
140
|
comments:
|
135
141
|
reviewed_by: ollietulloch
|
136
|
-
safe_revision:
|
142
|
+
safe_revision: '09b3f97fb4c1afc88d0d070c39796b1f60c39d25'
|
137
143
|
lib/ndr_support/tasks.rb:
|
138
144
|
comments:
|
139
145
|
reviewed_by: timgentry
|
@@ -148,20 +154,20 @@ file safety:
|
|
148
154
|
safe_revision: 8e024a4bacfd36e172aad4b800f1960faae0b4b6
|
149
155
|
lib/ndr_support/utf8_encoding/control_characters.rb:
|
150
156
|
comments:
|
151
|
-
reviewed_by:
|
152
|
-
safe_revision:
|
157
|
+
reviewed_by: ollietulloch
|
158
|
+
safe_revision: '09b3f97fb4c1afc88d0d070c39796b1f60c39d25'
|
153
159
|
lib/ndr_support/utf8_encoding/force_binary.rb:
|
154
160
|
comments:
|
155
|
-
reviewed_by:
|
156
|
-
safe_revision:
|
161
|
+
reviewed_by: ollietulloch
|
162
|
+
safe_revision: '09b3f97fb4c1afc88d0d070c39796b1f60c39d25'
|
157
163
|
lib/ndr_support/utf8_encoding/object_support.rb:
|
158
164
|
comments:
|
159
|
-
reviewed_by:
|
160
|
-
safe_revision:
|
165
|
+
reviewed_by: ollietulloch
|
166
|
+
safe_revision: '09b3f97fb4c1afc88d0d070c39796b1f60c39d25'
|
161
167
|
lib/ndr_support/version.rb:
|
162
168
|
comments:
|
163
|
-
reviewed_by:
|
164
|
-
safe_revision:
|
169
|
+
reviewed_by: ollietulloch
|
170
|
+
safe_revision: b0dc20ab24516ac5c3ecb6c7078b56a20dd2fbd5
|
165
171
|
lib/ndr_support/working_days.rb:
|
166
172
|
comments:
|
167
173
|
reviewed_by: josh.pencheon
|
@@ -172,8 +178,8 @@ file safety:
|
|
172
178
|
safe_revision: 29595e6431587ff9b7db6e3ad3abbb3577bff99c
|
173
179
|
ndr_support.gemspec:
|
174
180
|
comments:
|
175
|
-
reviewed_by:
|
176
|
-
safe_revision:
|
181
|
+
reviewed_by: ollietulloch
|
182
|
+
safe_revision: 993f7719b57eb6ddd8dffa7230ed9ffc69f48749
|
177
183
|
test/array_test.rb:
|
178
184
|
comments:
|
179
185
|
reviewed_by: timgentry
|
@@ -185,7 +191,7 @@ file safety:
|
|
185
191
|
test/daterange_test.rb:
|
186
192
|
comments:
|
187
193
|
reviewed_by: ollietulloch
|
188
|
-
safe_revision:
|
194
|
+
safe_revision: 7b9c9525a5d9d319ddec75d5106c85a53f77e3f4
|
189
195
|
test/hash_test.rb:
|
190
196
|
comments:
|
191
197
|
reviewed_by: timgentry
|
@@ -245,7 +251,7 @@ file safety:
|
|
245
251
|
test/string/conversions_test.rb:
|
246
252
|
comments:
|
247
253
|
reviewed_by: ollietulloch
|
248
|
-
safe_revision:
|
254
|
+
safe_revision: '09b3f97fb4c1afc88d0d070c39796b1f60c39d25'
|
249
255
|
test/test_helper.rb:
|
250
256
|
comments:
|
251
257
|
reviewed_by: josh.pencheon
|
@@ -8,6 +8,9 @@ class Daterange
|
|
8
8
|
|
9
9
|
OKYEARS = 1880..2030
|
10
10
|
|
11
|
+
# Raised when dates are not supplied in the correct order if do_not_flip_dates is passed as true:
|
12
|
+
class WrongDateOrderError < StandardError; end
|
13
|
+
|
11
14
|
def self.extract(dates_string)
|
12
15
|
dates_string.to_s.split(',').map { |str| new(str) }
|
13
16
|
end
|
@@ -17,15 +20,15 @@ class Daterange
|
|
17
20
|
new(ranges.map(&:date1).compact.min, ranges.map(&:date2).compact.max)
|
18
21
|
end
|
19
22
|
|
20
|
-
def initialize(x1 = nil, x2 = nil)
|
23
|
+
def initialize(x1 = nil, x2 = nil, do_not_sort_dates: false)
|
21
24
|
x1 = x1.to_datetime if x1.is_a?(Date) || x1.is_a?(Time)
|
22
25
|
x2 = x2.to_datetime if x2.is_a?(Date) || x2.is_a?(Time)
|
23
26
|
|
24
27
|
if x1.is_a?(DateTime) && x2.is_a?(DateTime)
|
25
|
-
@date1 = [x1, x2].min
|
26
|
-
@date2 = [x1, x2].max
|
28
|
+
@date1 = do_not_sort_dates ? x1 : [x1, x2].min
|
29
|
+
@date2 = do_not_sort_dates ? x2 : [x1, x2].max
|
27
30
|
@source = nil
|
28
|
-
elsif x1.is_a?(Daterange) && x2.nil?
|
31
|
+
elsif x1.is_a?(Daterange) && x2.nil? # Patient model line 645
|
29
32
|
@date1 = x1.date1
|
30
33
|
@date2 = x1.date2
|
31
34
|
@source = x1.source
|
@@ -34,12 +37,14 @@ class Daterange
|
|
34
37
|
@date2 = x1
|
35
38
|
@source = nil
|
36
39
|
elsif x1.is_a?(String) && x2.nil?
|
37
|
-
self.source
|
40
|
+
self.send(:source=, x1, do_not_sort_dates)
|
38
41
|
else
|
39
42
|
@date1 = nil
|
40
43
|
@date2 = nil
|
41
44
|
@source = nil
|
42
45
|
end
|
46
|
+
raise WrongDateOrderError, 'Invalid date range order' if do_not_sort_dates && @date1 > @date2
|
47
|
+
|
43
48
|
self.freeze
|
44
49
|
end
|
45
50
|
|
@@ -137,22 +142,23 @@ class Daterange
|
|
137
142
|
# +s+ consists of one or more dates separated with spaces.
|
138
143
|
# Each date can be in various formats, e.g. d/m/yyyy, ddmmyyyy, yyyy-mm-dd, dd-mon-yyyy
|
139
144
|
# Each date can omit days or months, e.g. yyyy, dd/yyyy, yyyy-mm, mon-yyyy
|
140
|
-
def source=(s)
|
145
|
+
def source=(s, do_not_sort_dates)
|
141
146
|
@source = s
|
142
147
|
ss = s.upcase.sub(/TO/, ' ') # accept default _to_s format
|
143
|
-
if ss =~
|
148
|
+
if ss =~ %r{[^A-Z0-9\-/\. ]}i # only allow letters, digits, hyphen, slash, dot, space
|
144
149
|
@date1 = @date2 = nil
|
145
150
|
else
|
146
151
|
da = [] # temporary array of arrays of dates
|
147
|
-
ss.split
|
152
|
+
ss.split.each do |vaguedate|
|
148
153
|
da << str_to_date_array(vaguedate)
|
149
154
|
end
|
150
155
|
da.flatten!
|
151
156
|
if da.include?(nil)
|
152
|
-
@date1 = @date2 =
|
157
|
+
@date1 = @date2 = nil
|
153
158
|
else
|
154
|
-
da.sort!
|
155
|
-
@date1
|
159
|
+
da.sort! unless do_not_sort_dates
|
160
|
+
@date1 = da.first
|
161
|
+
@date2 = da.last
|
156
162
|
end
|
157
163
|
end
|
158
164
|
end
|
data/lib/ndr_support/ourdate.rb
CHANGED
@@ -31,6 +31,8 @@ class Ourdate
|
|
31
31
|
# with strings arguments only after the 1970 epoch; before, it returns nil.
|
32
32
|
#++
|
33
33
|
def self.build_datetime(year, month = 1, day = 1, hour = 0, min = 0, sec = 0, usec = 0)
|
34
|
+
return nil if year.nil?
|
35
|
+
|
34
36
|
if ActiveRecord::Base.default_timezone == :local
|
35
37
|
# Time.local_time(year, month, day, hour, min, sec, usec).to_datetime
|
36
38
|
# Behave like oracle_adapter.rb
|
@@ -72,8 +74,8 @@ class Ourdate
|
|
72
74
|
end
|
73
75
|
|
74
76
|
def empty?
|
75
|
-
# An unspecified date will be empty. A valid
|
76
|
-
@thedate.nil?
|
77
|
+
# An unspecified date will be empty. A valid date will not.
|
78
|
+
@thedate.nil?
|
77
79
|
end
|
78
80
|
|
79
81
|
def source=(s)
|
data/lib/ndr_support/ourtime.rb
CHANGED
@@ -84,7 +84,7 @@ class String
|
|
84
84
|
|
85
85
|
# Try to convert the string value into a date.
|
86
86
|
# If given a pattern, use it to parse date, otherwise use default setting to parse it
|
87
|
-
|
87
|
+
redefine_method :to_date do |pattern = nil|
|
88
88
|
return nil if blank?
|
89
89
|
|
90
90
|
pattern = '%d%m%Y' if 'ddmmyyyy' == pattern
|
data/lib/ndr_support/version.rb
CHANGED
data/ndr_support.gemspec
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
lib = File.expand_path('
|
1
|
+
lib = File.expand_path('lib', __dir__)
|
2
2
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
3
3
|
require 'ndr_support/version'
|
4
4
|
|
@@ -13,9 +13,7 @@ Gem::Specification.new do |spec|
|
|
13
13
|
spec.license = 'MIT'
|
14
14
|
|
15
15
|
# Exclude older versions of this gem from the package.
|
16
|
-
spec.files = `git ls-files -z`.split("\x0").reject { |s| s =~
|
17
|
-
# SECURE BNS 2018-08-06: Minimise sharing of (public-key encrypted) slack secrets in .travis.yml
|
18
|
-
spec.files -= %w[.travis.yml] # Not needed in the gem
|
16
|
+
spec.files = `git ls-files -z`.split("\x0").reject { |s| s =~ %r{^(\.github|pkg/)} }
|
19
17
|
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
20
18
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
21
19
|
spec.require_paths = ['lib']
|
@@ -26,7 +24,7 @@ Gem::Specification.new do |spec|
|
|
26
24
|
spec.add_development_dependency 'bundler'
|
27
25
|
spec.add_development_dependency 'rake', '>= 12.3.3'
|
28
26
|
|
29
|
-
spec.required_ruby_version = '>= 2.
|
27
|
+
spec.required_ruby_version = '>= 2.6.0'
|
30
28
|
|
31
29
|
# Avoid std-lib minitest (which has different namespace)
|
32
30
|
spec.add_development_dependency 'minitest', '>= 5.0.0'
|
data/test/daterange_test.rb
CHANGED
@@ -24,19 +24,47 @@ class DaterangeTest < Minitest::Test
|
|
24
24
|
# assert_match(/\d\d\.\d\d\.\d\d\d\d to \d\d.\d\d.\d\d\d\d/, dr.to_s)
|
25
25
|
end
|
26
26
|
|
27
|
-
def
|
28
|
-
d =
|
29
|
-
dr = Daterange.new
|
30
|
-
dr2 = Daterange.new
|
27
|
+
def test_date_time_dates_in_reverse_order_with_do_not_sort_dates_false
|
28
|
+
d = Time.zone.today
|
29
|
+
dr = Daterange.new(d, d + 1)
|
30
|
+
dr2 = Daterange.new(d + 1, d)
|
31
31
|
assert_equal(dr.to_s, dr2.to_s)
|
32
32
|
end
|
33
33
|
|
34
|
+
def test_date_time_dates_in_reverse_order_with_do_not_sort_dates_true
|
35
|
+
d = Time.zone.today
|
36
|
+
Daterange.new(d, d + 1, do_not_sort_dates: true)
|
37
|
+
assert_raises(Daterange::WrongDateOrderError) do
|
38
|
+
Daterange.new(d + 1, d, do_not_sort_dates: true)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
def test_string_dates_in_reverse_order_with_do_not_sort_dates_false
|
43
|
+
dr = Daterange.new('01/01/2019 to 01/01/2020')
|
44
|
+
dr2 = Daterange.new('01/01/2020 to 01/01/2019')
|
45
|
+
assert_equal(dr.to_s, dr2.to_s)
|
46
|
+
end
|
47
|
+
|
48
|
+
def test_string_dates_in_reverse_order_with_do_not_sort_dates_true
|
49
|
+
Daterange.new('01/01/2019 to 01/01/2020', do_not_sort_dates: true)
|
50
|
+
assert_raises(Daterange::WrongDateOrderError) do
|
51
|
+
Daterange.new('01/01/2020 to 01/01/2019', do_not_sort_dates: true)
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
34
55
|
def test_illegal_strings
|
35
56
|
dr = Daterange.new('01/o1/2000')
|
36
57
|
assert_equal '', dr.to_s
|
37
58
|
assert_nil dr.date1
|
38
59
|
assert_nil dr.date2
|
39
|
-
refute dr.empty?
|
60
|
+
refute dr.empty? # Illegal dates do not count as empty / blank,
|
61
|
+
refute_nil dr.source # but the illegal string is preserved
|
62
|
+
|
63
|
+
dr = Daterange.new('01_01_2000')
|
64
|
+
assert_equal '', dr.to_s
|
65
|
+
assert_nil dr.date1
|
66
|
+
assert_nil dr.date2
|
67
|
+
refute dr.empty? # Illegal dates do not count as empty / blank,
|
40
68
|
refute_nil dr.source # but the illegal string is preserved
|
41
69
|
end
|
42
70
|
|
@@ -357,9 +357,9 @@ class String::ConversionsTest < Minitest::Test
|
|
357
357
|
end
|
358
358
|
|
359
359
|
def assert_ymd(ymd, date)
|
360
|
-
assert_equal ymd
|
361
|
-
assert_equal ymd
|
362
|
-
assert_equal ymd
|
360
|
+
assert_equal ymd[0], date.year, 'years were not equal'
|
361
|
+
assert_equal ymd[1], date.month, 'months were not equal'
|
362
|
+
assert_equal ymd[2], date.day, 'days were not equal'
|
363
363
|
end
|
364
364
|
|
365
365
|
def assert_ymd_parsed(ymd, parse_results)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ndr_support
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 5.
|
4
|
+
version: 5.8.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- NCRS Development Team
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-04-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|
@@ -309,7 +309,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
309
309
|
requirements:
|
310
310
|
- - ">="
|
311
311
|
- !ruby/object:Gem::Version
|
312
|
-
version: 2.
|
312
|
+
version: 2.6.0
|
313
313
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
314
314
|
requirements:
|
315
315
|
- - ">="
|