ndr_dev_support 5.6.0 → 5.7.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +10 -0
- data/README.md +1 -1
- data/code_safety.yml +11 -11
- data/lib/ndr_dev_support/capistrano/svn_cache.rb +6 -0
- data/lib/ndr_dev_support/rake_ci/brakeman_helper.rb +87 -2
- data/lib/ndr_dev_support/rake_ci/redmine/ticket_resolver.rb +10 -6
- data/lib/ndr_dev_support/version.rb +1 -1
- data/lib/tasks/ci/brakeman.rake +23 -36
- data/lib/tasks/ci/minitest.rake +3 -4
- data/lib/tasks/ci/redmine.rake +2 -2
- data/ndr_dev_support.gemspec +1 -1
- metadata +10 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 597318cf10af72895cde73338ece46a13d00893ec14c240ee24b4063c68bfef9
|
4
|
+
data.tar.gz: af273055a5d011e8897bcdbd164cd9d31b99175ad48c862de84ed4765cff6644
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2368ad56bd91b4f48815998b8e4ccf5ed0fde7d62c337e99222ccc77c16619eaf696d5b30fe78be9048b256787da199d9b23142c2577e8ec2fd2a05021af1a8f
|
7
|
+
data.tar.gz: 8ef7192f3b4f8404982bdab883e2cde34c79bbaae9f58a22ef78a409a0eda1a6b492af343e72db7fe8b8096b042fba35c6d483faf5df171f064059c3af4f06b2
|
data/CHANGELOG.md
CHANGED
@@ -1,6 +1,16 @@
|
|
1
1
|
## [Unreleased]
|
2
2
|
*no unreleased changes*
|
3
3
|
|
4
|
+
## 5.7.0 / 2020-03-26
|
5
|
+
### Added
|
6
|
+
* Add `ci:brakeman:strict` alternative CI task. (#77)
|
7
|
+
* Send `brakeman_filtered_warnings` metrics. (#78)
|
8
|
+
* Allow redmine tickets to be updated (but not resolved) when the build fails (#73)
|
9
|
+
|
10
|
+
### Fixed
|
11
|
+
* Stop including asset compilation caches in the deployment archive.
|
12
|
+
* Ensure brakeman alerts aren't sent to Slack if they've been reviewed and filtered out
|
13
|
+
|
4
14
|
## 5.6.0 / 2020-02-14
|
5
15
|
### Added
|
6
16
|
* Add `flakey_test` to the minitest DSL, to allow sporadic failures to be retried
|
data/README.md
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
## NdrDevSupport [![Build Status](https://travis-ci.org/PublicHealthEngland/ndr_dev_support.svg?branch=master)](https://travis-ci.org/PublicHealthEngland/ndr_dev_support) [![Gem Version](https://badge.fury.io/rb/ndr_dev_support.svg)](https://badge.fury.io/rb/ndr_dev_support)
|
1
|
+
## NdrDevSupport [![Maintainability](https://api.codeclimate.com/v1/badges/2b2a644964f2aa930f81/maintainability)](https://codeclimate.com/github/PublicHealthEngland/ndr_dev_support/maintainability) [![Build Status](https://travis-ci.org/PublicHealthEngland/ndr_dev_support.svg?branch=master)](https://travis-ci.org/PublicHealthEngland/ndr_dev_support) [![Gem Version](https://badge.fury.io/rb/ndr_dev_support.svg)](https://badge.fury.io/rb/ndr_dev_support)
|
2
2
|
|
3
3
|
This is the Public Health England (PHE) National Disease Registers (NDR) Developer Support ruby gem,
|
4
4
|
providing:
|
data/code_safety.yml
CHANGED
@@ -19,7 +19,7 @@ file safety:
|
|
19
19
|
CHANGELOG.md:
|
20
20
|
comments:
|
21
21
|
reviewed_by: josh.pencheon
|
22
|
-
safe_revision:
|
22
|
+
safe_revision: 1f4383e983313441ba3b118891dfb1c3ff962368
|
23
23
|
CODE_OF_CONDUCT.md:
|
24
24
|
comments:
|
25
25
|
reviewed_by: timgentry
|
@@ -35,7 +35,7 @@ file safety:
|
|
35
35
|
README.md:
|
36
36
|
comments:
|
37
37
|
reviewed_by: josh.pencheon
|
38
|
-
safe_revision:
|
38
|
+
safe_revision: b405f60e921805378ba1f3beaeb10cf1a8503182
|
39
39
|
Rakefile:
|
40
40
|
comments:
|
41
41
|
reviewed_by: josh.pencheon
|
@@ -99,7 +99,7 @@ file safety:
|
|
99
99
|
lib/ndr_dev_support/capistrano/svn_cache.rb:
|
100
100
|
comments:
|
101
101
|
reviewed_by: josh.pencheon
|
102
|
-
safe_revision:
|
102
|
+
safe_revision: 2baa360b06290775a961a7573fe08edd18f8312e
|
103
103
|
lib/ndr_dev_support/capistrano/sysadmin_scripts.rb:
|
104
104
|
comments:
|
105
105
|
reviewed_by: josh.pencheon
|
@@ -147,7 +147,7 @@ file safety:
|
|
147
147
|
lib/ndr_dev_support/rake_ci/brakeman_helper.rb:
|
148
148
|
comments:
|
149
149
|
reviewed_by: josh.pencheon
|
150
|
-
safe_revision:
|
150
|
+
safe_revision: 053c9834ca5d402a1f8dc8d09257dc7075a5ec06
|
151
151
|
lib/ndr_dev_support/rake_ci/commit_cop.rb:
|
152
152
|
comments:
|
153
153
|
reviewed_by: josh.pencheon
|
@@ -179,7 +179,7 @@ file safety:
|
|
179
179
|
lib/ndr_dev_support/rake_ci/redmine/ticket_resolver.rb:
|
180
180
|
comments:
|
181
181
|
reviewed_by: josh.pencheon
|
182
|
-
safe_revision:
|
182
|
+
safe_revision: 12aad1254186ee9ce0fde263bf8dccf46cdfebe2
|
183
183
|
lib/ndr_dev_support/rake_ci/simple_cov_helper.rb:
|
184
184
|
comments:
|
185
185
|
reviewed_by: timgentry
|
@@ -215,7 +215,7 @@ file safety:
|
|
215
215
|
lib/ndr_dev_support/version.rb:
|
216
216
|
comments:
|
217
217
|
reviewed_by: josh.pencheon
|
218
|
-
safe_revision:
|
218
|
+
safe_revision: 1f4383e983313441ba3b118891dfb1c3ff962368
|
219
219
|
lib/tasks/audit_code.rake:
|
220
220
|
comments: Identical to the version reviewed by josh.pencheon when contained within
|
221
221
|
ndr_support
|
@@ -224,7 +224,7 @@ file safety:
|
|
224
224
|
lib/tasks/ci/brakeman.rake:
|
225
225
|
comments:
|
226
226
|
reviewed_by: josh.pencheon
|
227
|
-
safe_revision:
|
227
|
+
safe_revision: 053c9834ca5d402a1f8dc8d09257dc7075a5ec06
|
228
228
|
lib/tasks/ci/bundle_audit.rake:
|
229
229
|
comments:
|
230
230
|
reviewed_by: josh.pencheon
|
@@ -248,7 +248,7 @@ file safety:
|
|
248
248
|
lib/tasks/ci/minitest.rake:
|
249
249
|
comments:
|
250
250
|
reviewed_by: josh.pencheon
|
251
|
-
safe_revision:
|
251
|
+
safe_revision: 12aad1254186ee9ce0fde263bf8dccf46cdfebe2
|
252
252
|
lib/tasks/ci/notes.rake:
|
253
253
|
comments:
|
254
254
|
reviewed_by: timgentry
|
@@ -260,7 +260,7 @@ file safety:
|
|
260
260
|
lib/tasks/ci/redmine.rake:
|
261
261
|
comments:
|
262
262
|
reviewed_by: josh.pencheon
|
263
|
-
safe_revision:
|
263
|
+
safe_revision: 12aad1254186ee9ce0fde263bf8dccf46cdfebe2
|
264
264
|
lib/tasks/ci/rugged.rake:
|
265
265
|
comments:
|
266
266
|
reviewed_by: josh.pencheon
|
@@ -288,7 +288,7 @@ file safety:
|
|
288
288
|
ndr_dev_support.gemspec:
|
289
289
|
comments:
|
290
290
|
reviewed_by: josh.pencheon
|
291
|
-
safe_revision:
|
291
|
+
safe_revision: f4c1ea57d3eb817783fdc47a16169d215f9788a6
|
292
292
|
test/daemon/ci_server_test.rb:
|
293
293
|
comments:
|
294
294
|
reviewed_by: josh.pencheon
|
@@ -316,7 +316,7 @@ file safety:
|
|
316
316
|
test/rake_ci/redmine/ticket_resolver_test.rb:
|
317
317
|
comments:
|
318
318
|
reviewed_by: josh.pencheon
|
319
|
-
safe_revision:
|
319
|
+
safe_revision: 12aad1254186ee9ce0fde263bf8dccf46cdfebe2
|
320
320
|
test/test_helper.rb:
|
321
321
|
comments:
|
322
322
|
reviewed_by: josh.pencheon
|
@@ -17,7 +17,13 @@ Capistrano::Configuration.instance(:must_exist).load do
|
|
17
17
|
system("rm -rf #{cache}")
|
18
18
|
end
|
19
19
|
end
|
20
|
+
|
21
|
+
desc 'Ensures compilation artefacts are removed from the compressed archive sent to the server'
|
22
|
+
task :augment_copy_exclude do
|
23
|
+
set :copy_exclude, (fetch(:copy_exclude) || []) + %w[node_modules tmp/*]
|
24
|
+
end
|
20
25
|
end
|
21
26
|
|
27
|
+
before 'deploy:update_code', 'ndr_dev_support:augment_copy_exclude'
|
22
28
|
before 'deploy:update_code', 'ndr_dev_support:remove_svn_cache_if_needed'
|
23
29
|
end
|
@@ -10,7 +10,9 @@ module NdrDevSupport
|
|
10
10
|
|
11
11
|
attr_reader :new_fingerprints, :old_fingerprints, :tracker
|
12
12
|
|
13
|
-
def run
|
13
|
+
def run(strict:)
|
14
|
+
@strict = strict
|
15
|
+
|
14
16
|
@tracker = ::Brakeman.run(app_path: '.')
|
15
17
|
|
16
18
|
last_commit_fingerprints = load_last_commit_data
|
@@ -22,10 +24,16 @@ module NdrDevSupport
|
|
22
24
|
end
|
23
25
|
end
|
24
26
|
|
27
|
+
# All warnings (including those we've flagged as false positives)
|
25
28
|
def warnings
|
26
29
|
@tracker.warnings
|
27
30
|
end
|
28
31
|
|
32
|
+
# Only the warnings we haven't flagged as false positives (i.e. the outstanding ones)
|
33
|
+
def filtered_warnings
|
34
|
+
@tracker.filtered_warnings
|
35
|
+
end
|
36
|
+
|
29
37
|
def warning_counts_by_confidence
|
30
38
|
return @warning_counts_by_confidence if @warning_counts_by_confidence
|
31
39
|
|
@@ -36,13 +44,90 @@ module NdrDevSupport
|
|
36
44
|
@warning_counts_by_confidence
|
37
45
|
end
|
38
46
|
|
47
|
+
def filtered_warning_counts_by_confidence
|
48
|
+
return @filtered_warning_counts_by_confidence if @filtered_warning_counts_by_confidence
|
49
|
+
|
50
|
+
@filtered_warning_counts_by_confidence = {}
|
51
|
+
filtered_warnings.group_by(&:confidence).each do |confidence, grouped_warnings|
|
52
|
+
@filtered_warning_counts_by_confidence[confidence] = grouped_warnings.count
|
53
|
+
end
|
54
|
+
@filtered_warning_counts_by_confidence
|
55
|
+
end
|
56
|
+
|
39
57
|
def current_fingerprints
|
40
|
-
@current_fingerprints ||=
|
58
|
+
@current_fingerprints ||= filtered_warnings.map(&:fingerprint).to_set
|
41
59
|
end
|
42
60
|
|
43
61
|
def save_current_fingerprints
|
44
62
|
save_current_commit_data(current_fingerprints)
|
45
63
|
end
|
64
|
+
|
65
|
+
def metrics
|
66
|
+
metrics = []
|
67
|
+
|
68
|
+
::Brakeman::Warning::TEXT_CONFIDENCE.each do |confidence, text|
|
69
|
+
overall_metric = {
|
70
|
+
name: 'brakeman_warnings',
|
71
|
+
type: :gauge,
|
72
|
+
label_set: { confidence: text },
|
73
|
+
value: warning_counts_by_confidence[confidence] || 0
|
74
|
+
}
|
75
|
+
filtered_metric = {
|
76
|
+
name: 'brakeman_filtered_warnings',
|
77
|
+
type: :gauge,
|
78
|
+
label_set: { confidence: text },
|
79
|
+
value: filtered_warning_counts_by_confidence[confidence] || 0
|
80
|
+
}
|
81
|
+
metrics << overall_metric << filtered_metric
|
82
|
+
puts overall_metric.inspect
|
83
|
+
puts filtered_metric.inspect
|
84
|
+
end
|
85
|
+
|
86
|
+
metrics
|
87
|
+
end
|
88
|
+
|
89
|
+
def attachments
|
90
|
+
attachments = []
|
91
|
+
|
92
|
+
if @strict && current_fingerprints.any?
|
93
|
+
# all warnings found
|
94
|
+
attachment = {
|
95
|
+
color: 'danger',
|
96
|
+
title: "#{current_fingerprints.size} Brakeman warning(s) :rotating_light:",
|
97
|
+
text: '_Brakeman_ warning fingerprint(s):' \
|
98
|
+
"```#{current_fingerprints.to_a.join("\n")}```",
|
99
|
+
footer: 'bundle exec rake ci:brakeman:fingerprint_details FINGERPRINTS=...',
|
100
|
+
mrkdwn_in: ['text']
|
101
|
+
}
|
102
|
+
attachments << attachment
|
103
|
+
puts attachment.inspect
|
104
|
+
elsif new_fingerprints.any?
|
105
|
+
# new warnings found
|
106
|
+
attachment = {
|
107
|
+
color: 'danger',
|
108
|
+
title: "#{new_fingerprints.size} new Brakeman warning(s) :rotating_light:",
|
109
|
+
text: '_Brakeman_ warning fingerprint(s):' \
|
110
|
+
"```#{new_fingerprints.to_a.join("\n")}```",
|
111
|
+
footer: 'bundle exec rake ci:brakeman:fingerprint_details FINGERPRINTS=...',
|
112
|
+
mrkdwn_in: ['text']
|
113
|
+
}
|
114
|
+
attachments << attachment
|
115
|
+
puts attachment.inspect
|
116
|
+
end
|
117
|
+
|
118
|
+
unless old_fingerprints.empty?
|
119
|
+
# old warnings missing
|
120
|
+
attachment = {
|
121
|
+
color: 'good',
|
122
|
+
title: "#{old_fingerprints.size} Brakeman warning(s) resolved :+1:",
|
123
|
+
footer: 'bundle exec rake ci:brakeman'
|
124
|
+
}
|
125
|
+
attachments << attachment
|
126
|
+
puts attachment.inspect
|
127
|
+
end
|
128
|
+
|
129
|
+
attachments
|
130
|
+
end
|
46
131
|
end
|
47
132
|
end
|
48
133
|
end
|
@@ -36,13 +36,13 @@ module NdrDevSupport
|
|
36
36
|
@hostname = hostname
|
37
37
|
end
|
38
38
|
|
39
|
-
def process_commit(user, revision, message)
|
39
|
+
def process_commit(user, revision, message, tests_passed)
|
40
40
|
resolved_tickets = []
|
41
41
|
|
42
42
|
each_ticket_from(message) do |ticket, resolved|
|
43
|
-
update_ticket(message, user, revision, ticket, resolved)
|
43
|
+
update_ticket(message, user, revision, ticket, resolved, tests_passed)
|
44
44
|
|
45
|
-
resolved_tickets << ticket if resolved
|
45
|
+
resolved_tickets << ticket if resolved && tests_passed
|
46
46
|
end
|
47
47
|
|
48
48
|
resolved_tickets
|
@@ -62,13 +62,17 @@ module NdrDevSupport
|
|
62
62
|
end
|
63
63
|
end
|
64
64
|
|
65
|
-
def update_payload(message, user, revision, ticket_closed, resolved)
|
65
|
+
def update_payload(message, user, revision, ticket_closed, resolved, tests_passed)
|
66
|
+
if resolved && !ticket_closed && !tests_passed
|
67
|
+
message += "\n\n*Automated tests did not pass successfully, so ticket status left unchanged.*"
|
68
|
+
end
|
69
|
+
|
66
70
|
payload = {
|
67
71
|
notes: "_#{resolved ? 'Resolved' : 'Referenced'} by #{user} in #{revision}_:" \
|
68
72
|
"#{resolved ? message.gsub(CLOSE_REGEX, '+\1+') : message}"
|
69
73
|
}
|
70
74
|
|
71
|
-
payload[:status_id] = 3 if resolved && !ticket_closed
|
75
|
+
payload[:status_id] = 3 if resolved && !ticket_closed && tests_passed
|
72
76
|
payload
|
73
77
|
end
|
74
78
|
|
@@ -83,7 +87,7 @@ module NdrDevSupport
|
|
83
87
|
end
|
84
88
|
|
85
89
|
def update_ticket(message, user, revision, ticket, resolved)
|
86
|
-
payload = update_payload(message, user, revision, ticket_closed?(ticket), resolved)
|
90
|
+
payload = update_payload(message, user, revision, ticket_closed?(ticket), resolved, tests_passed)
|
87
91
|
|
88
92
|
http.send_request('PUT',
|
89
93
|
"/issues/#{ticket.to_i}.json",
|
data/lib/tasks/ci/brakeman.rake
CHANGED
@@ -11,48 +11,35 @@ namespace :ci do
|
|
11
11
|
|
12
12
|
brakeman = NdrDevSupport::RakeCI::BrakemanHelper.new
|
13
13
|
brakeman.commit = @commit
|
14
|
-
brakeman.run
|
15
|
-
|
16
|
-
Brakeman::Warning::TEXT_CONFIDENCE.each do |confidence, text|
|
17
|
-
metric = {
|
18
|
-
name: 'brakeman_warnings',
|
19
|
-
type: :gauge,
|
20
|
-
label_set: { confidence: text },
|
21
|
-
value: brakeman.warning_counts_by_confidence[confidence] || 0
|
22
|
-
}
|
23
|
-
@metrics << metric
|
24
|
-
puts metric.inspect
|
25
|
-
end
|
26
|
-
|
27
|
-
unless brakeman.new_fingerprints.empty?
|
28
|
-
# new warnings found
|
29
|
-
attachment = {
|
30
|
-
color: 'danger',
|
31
|
-
title: "#{brakeman.new_fingerprints.size} new Brakeman warning(s) :rotating_light:",
|
32
|
-
text: '_Brakeman_ warning fingerprint(s):' \
|
33
|
-
"```#{brakeman.new_fingerprints.to_a.join("\n")}```",
|
34
|
-
footer: 'bundle exec rake ci:brakeman:fingerprint_details FINGERPRINTS=...',
|
35
|
-
mrkdwn_in: ['text']
|
36
|
-
}
|
37
|
-
@attachments << attachment
|
38
|
-
puts attachment.inspect
|
39
|
-
end
|
14
|
+
brakeman.run(strict: false)
|
40
15
|
|
41
|
-
|
42
|
-
|
43
|
-
attachment = {
|
44
|
-
color: 'good',
|
45
|
-
title: "#{brakeman.old_fingerprints.size} Brakeman warning(s) resolved :+1:",
|
46
|
-
footer: 'bundle exec rake ci:brakeman'
|
47
|
-
}
|
48
|
-
@attachments << attachment
|
49
|
-
puts attachment.inspect
|
50
|
-
end
|
16
|
+
@metrics.concat(brakeman.metrics)
|
17
|
+
@attachments.concat(brakeman.attachments)
|
51
18
|
|
52
19
|
brakeman.save_current_fingerprints
|
53
20
|
end
|
54
21
|
|
55
22
|
namespace :brakeman do
|
23
|
+
desc "Brakeman (strict mode - all issues must be reviewed by Brakeman's interactive mode)"
|
24
|
+
task strict: 'ci:rugged:setup' do
|
25
|
+
next unless defined?(Rails)
|
26
|
+
|
27
|
+
require 'ndr_dev_support/rake_ci/brakeman_helper'
|
28
|
+
# Usage: bundle exec rake ci:brakeman:strict
|
29
|
+
|
30
|
+
@metrics ||= []
|
31
|
+
@attachments ||= []
|
32
|
+
|
33
|
+
brakeman = NdrDevSupport::RakeCI::BrakemanHelper.new
|
34
|
+
brakeman.commit = @commit
|
35
|
+
brakeman.run(strict: true)
|
36
|
+
|
37
|
+
@metrics.concat(brakeman.metrics)
|
38
|
+
@attachments.concat(brakeman.attachments)
|
39
|
+
|
40
|
+
brakeman.save_current_fingerprints
|
41
|
+
end
|
42
|
+
|
56
43
|
desc 'Brakeman fingerprint details'
|
57
44
|
task fingerprint_details: 'ci:rugged:setup' do
|
58
45
|
# Usage: bundle exec rake ci:brakeman:fingerprint_details FINGERPRINTS=fp1,fp2,...
|
data/lib/tasks/ci/minitest.rake
CHANGED
@@ -47,10 +47,9 @@ namespace :ci do
|
|
47
47
|
# Test(s) ran
|
48
48
|
Rake::Task['ci:simplecov:process'].invoke
|
49
49
|
|
50
|
-
if
|
51
|
-
|
52
|
-
|
53
|
-
Rake::Task['ci:redmine:update_tickets'].invoke
|
50
|
+
if Rake::Task.task_defined?('ci:redmine:update_tickets')
|
51
|
+
tests_passed = hash[:statistics][:failures].zero? && hash[:statistics][:errors].zero?
|
52
|
+
Rake::Task['ci:redmine:update_tickets'].invoke(tests_passed)
|
54
53
|
end
|
55
54
|
|
56
55
|
@attachments.concat(hash[:attachments])
|
data/lib/tasks/ci/redmine.rake
CHANGED
@@ -12,7 +12,7 @@ namespace :ci do
|
|
12
12
|
end
|
13
13
|
|
14
14
|
desc 'Update Redmine tickets'
|
15
|
-
task update_tickets: ['ci:rugged:setup', 'ci:redmine:setup'] do
|
15
|
+
task :update_tickets, [:tests_passed] => ['ci:rugged:setup', 'ci:redmine:setup'] do |task, args|
|
16
16
|
api_key = ENV['REDMINE_API_KEY']
|
17
17
|
hostname = ENV['REDMINE_HOSTNAME']
|
18
18
|
next if api_key.nil? || hostname.nil?
|
@@ -27,7 +27,7 @@ namespace :ci do
|
|
27
27
|
ticket_resolver = NdrDevSupport::RakeCI::Redmine::TicketResolver.new(api_key, hostname)
|
28
28
|
resolved_tickets = ticket_resolver.process_commit(@commit.author[:name],
|
29
29
|
@friendly_revision_name,
|
30
|
-
@commit.message)
|
30
|
+
@commit.message, args.tests_passed)
|
31
31
|
rescue
|
32
32
|
@attachments << {
|
33
33
|
color: 'danger',
|
data/ndr_dev_support.gemspec
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ndr_dev_support
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 5.
|
4
|
+
version: 5.7.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- NCRS Development Team
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-03-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: pry
|
@@ -366,14 +366,20 @@ dependencies:
|
|
366
366
|
requirements:
|
367
367
|
- - "~>"
|
368
368
|
- !ruby/object:Gem::Version
|
369
|
-
version: '
|
369
|
+
version: '12.3'
|
370
|
+
- - ">="
|
371
|
+
- !ruby/object:Gem::Version
|
372
|
+
version: 12.3.3
|
370
373
|
type: :development
|
371
374
|
prerelease: false
|
372
375
|
version_requirements: !ruby/object:Gem::Requirement
|
373
376
|
requirements:
|
374
377
|
- - "~>"
|
375
378
|
- !ruby/object:Gem::Version
|
376
|
-
version: '
|
379
|
+
version: '12.3'
|
380
|
+
- - ">="
|
381
|
+
- !ruby/object:Gem::Version
|
382
|
+
version: 12.3.3
|
377
383
|
description: Provides support to developers of NDR projects
|
378
384
|
email: []
|
379
385
|
executables: []
|