sensu-plugins-network-checks 4.1.1 → 5.0.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 +22 -1
- data/bin/check-mtu.rb +0 -1
- data/bin/check-multicast-groups.rb +2 -2
- data/bin/check-netfilter-conntrack.rb +1 -1
- data/bin/check-netstat-tcp.rb +1 -0
- data/bin/check-ports-bind.rb +109 -41
- data/bin/metrics-interface.rb +13 -0
- data/bin/metrics-net.rb +1 -0
- data/bin/metrics-netstat-tcp.rb +14 -2
- data/bin/metrics-ping.rb +1 -1
- data/bin/metrics-sockstat.rb +2 -2
- data/lib/sensu-plugins-network-checks/version.rb +3 -3
- metadata +14 -28
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9403cddd827516f176d2c6e53e8269e16c407c9dab1cd403dd03f4be819ee9ea
|
4
|
+
data.tar.gz: 43c4090041fb9f1218a6578771b8632221c894a9dbdb8e7f38cc845a8812890c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: '0058fc17e30c10c24a204b79894ecc051c91d7e056e7b932807bfe0fa3aee32933fe24e1502bec71fabf5cc2a695e481e3689fe14e9d5bb25e8ebbb873737cf5'
|
7
|
+
data.tar.gz: e70c078cb49a2d5650767874f52c5e2e5f5d33e00fe0e432a3c8ed0db13fc9ad17c1cda46d80a257647b19fb5c8d522c9e88f59f9ced08183eb3f3cffc983163
|
data/CHANGELOG.md
CHANGED
@@ -4,11 +4,31 @@ This project adheres to [Semantic Versioning](http://semver.org/).
|
|
4
4
|
This CHANGELOG follows the format listed [here](https://github.com/sensu-plugins/community/blob/master/HOW_WE_CHANGELOG.md)
|
5
5
|
|
6
6
|
## [Unreleased]
|
7
|
+
## [5.0.0] 2020-01-26
|
8
|
+
### Breaking Changes
|
9
|
+
- `metrics-sockstat.rb`: Added hostname to default metric scheme.
|
10
|
+
- `metrics-netstat-tcp.rb`: Added support to choose between local and remote port metrics. Defaults to local. Metric scheme extended to indicate local or remote.
|
11
|
+
|
12
|
+
### Added
|
13
|
+
- `metrics-interface.rb`: options to include or exclude interfaces via regex. `-X`, `--exclude-interfaces-regex` and `-I`, `--include-interfaces-regex` as alternative to `-x` and `-i`.
|
14
|
+
- `check-ports-bind.rb`: Allow to specify the protocol to check for each port individually (address:port/proto)
|
15
|
+
|
16
|
+
|
17
|
+
### Changed
|
18
|
+
- Updated net-ping runtime dependancy to '2.0.6'
|
19
|
+
- Updated rake development dependancy to '~> 12.3'
|
20
|
+
- Removed centos build from bonsai.yml
|
21
|
+
- Updated whois-parser to ~> 1.2
|
22
|
+
- Updated rubocop dependency to '~> 0.79.0'
|
23
|
+
- Reconciled issues identified by updating rubocop
|
24
|
+
- Updated rake requirement to '~> 13.0'
|
25
|
+
- Updated rdoc requirement to '~> 6.2.0'
|
7
26
|
|
8
27
|
## [4.1.1] - 2019-12-18
|
9
28
|
### Changed
|
10
29
|
- Updated README to conform with standardization guidelines (sensu-plugins/community#134)
|
11
30
|
- Updated bundler development depedency to '~> 2.1'
|
31
|
+
- Removed codeclimate development dependency
|
12
32
|
|
13
33
|
## [4.1.0] - 2019-012-12
|
14
34
|
### Added
|
@@ -250,7 +270,8 @@ This CHANGELOG follows the format listed [here](https://github.com/sensu-plugin
|
|
250
270
|
|
251
271
|
* initial release, same as community repo
|
252
272
|
|
253
|
-
[Unreleased]: https://github.com/sensu-plugins/sensu-plugins-network-checks/compare/
|
273
|
+
[Unreleased]: https://github.com/sensu-plugins/sensu-plugins-network-checks/compare/5.0.0...HEAD
|
274
|
+
[5.0.0]: https://github.com/sensu-plugins/sensu-plugins-network-checks/compare/4.1.1...5.0.0
|
254
275
|
[4.1.1]: https://github.com/sensu-plugins/sensu-plugins-network-checks/compare/4.0.0...4.1.1
|
255
276
|
[4.1.0]: https://github.com/sensu-plugins/sensu-plugins-network-checks/compare/4.0.0...4.1.0
|
256
277
|
[4.0.0]: https://github.com/sensu-plugins/sensu-plugins-network-checks/compare/3.2.1...4.0.0
|
data/bin/check-mtu.rb
CHANGED
@@ -68,7 +68,7 @@ class CheckMulticastGroups < Sensu::Plugin::Check::CLI
|
|
68
68
|
critical "#{diff.size} missing multicast group(s):\n#{diff_output}"
|
69
69
|
end
|
70
70
|
ok
|
71
|
-
rescue StandardError =>
|
72
|
-
critical "Failed to check multicast groups: #{
|
71
|
+
rescue StandardError => e
|
72
|
+
critical "Failed to check multicast groups: #{e}"
|
73
73
|
end
|
74
74
|
end
|
@@ -61,7 +61,7 @@ class CheckNetfilterConntrack < Sensu::Plugin::Check::CLI
|
|
61
61
|
def run
|
62
62
|
max = nf_conntrack_max
|
63
63
|
count = nf_conntrack_count
|
64
|
-
percentage = (count
|
64
|
+
percentage = (count / max.to_f) * 100
|
65
65
|
|
66
66
|
message "Table is at #{percentage.round(1)}% (#{count}/#{max})"
|
67
67
|
|
data/bin/check-netstat-tcp.rb
CHANGED
@@ -92,6 +92,7 @@ class CheckNetstatTCP < Sensu::Plugin::Check::CLI
|
|
92
92
|
connection_port = m[2].to_i(16)
|
93
93
|
connection_state = TCP_STATES[connection_state]
|
94
94
|
next unless config[:states].include?(connection_state)
|
95
|
+
|
95
96
|
if config[:port] && config[:port] == connection_port
|
96
97
|
state_counts[connection_state] += 1
|
97
98
|
elsif !config[:port]
|
data/bin/check-ports-bind.rb
CHANGED
@@ -23,10 +23,11 @@
|
|
23
23
|
# Ports are comma separated and support ranges
|
24
24
|
# ./check-ports.rb -p 127.0.0.1:22,46.20.205.10 --hard --warn
|
25
25
|
# ./check-ports.rb -p 127.0.0.1:22,46.20.205.10:80
|
26
|
+
# ./check-ports.rb -p 127.0.0.1:22,127.0.0.1:1812/udp,46.20.205.10:389/both
|
26
27
|
# If you mention a port without the bind address then the default address is : 0.0.0.0
|
27
28
|
#
|
28
29
|
# NOTES:
|
29
|
-
# By default, checks for openssh on localhost port 22
|
30
|
+
# By default, checks for openssh on localhost port 22 (TCP)
|
30
31
|
#
|
31
32
|
#
|
32
33
|
# LICENSE:
|
@@ -48,11 +49,11 @@ class CheckPort < Sensu::Plugin::Check::CLI
|
|
48
49
|
:hard,
|
49
50
|
short: '-d',
|
50
51
|
long: '--hard',
|
51
|
-
description: 'Check given ports on both, TCP & UDP',
|
52
|
+
description: 'Check given ports on both, TCP & UDP, if no explicit protocol is set',
|
52
53
|
boolean: true,
|
53
54
|
default: false
|
54
|
-
|
55
55
|
)
|
56
|
+
|
56
57
|
option(
|
57
58
|
:host,
|
58
59
|
short: '-H HOSTNAME',
|
@@ -65,7 +66,7 @@ class CheckPort < Sensu::Plugin::Check::CLI
|
|
65
66
|
:portbinds,
|
66
67
|
short: '-p PORTS',
|
67
68
|
long: '--portbinds PORTS',
|
68
|
-
description: 'different address:port to check, comma separated (0.0.0.0:22,localhost:25,127.0.0.0.1:8100-8131,192.168.0.12:3030)',
|
69
|
+
description: 'different address:port/protocol to check, comma separated (0.0.0.0:22,localhost:25/tcp,127.0.0.0.1:8100-8131/udp,192.168.0.12:3030/both)',
|
69
70
|
default: '0.0.0.0:22'
|
70
71
|
)
|
71
72
|
|
@@ -99,59 +100,126 @@ class CheckPort < Sensu::Plugin::Check::CLI
|
|
99
100
|
# Severity switcher
|
100
101
|
def severity(warn, text)
|
101
102
|
if warn
|
102
|
-
warning
|
103
|
+
warning(text.to_s)
|
103
104
|
else
|
104
|
-
critical
|
105
|
+
critical(text.to_s)
|
105
106
|
end
|
106
107
|
end
|
107
108
|
|
108
|
-
# Check
|
109
|
-
def
|
110
|
-
|
111
|
-
|
109
|
+
# Check valid port number
|
110
|
+
def valid_port?(port)
|
111
|
+
return false unless port =~ /^[0-9]+$/
|
112
|
+
|
113
|
+
(0..65_535).include?(port.to_i)
|
114
|
+
end
|
115
|
+
|
116
|
+
# Check valid port range
|
117
|
+
def valid_port_range?(port)
|
118
|
+
return false unless port =~ /^[0-9]+-[0-9]+$/
|
119
|
+
|
120
|
+
port_start, port_end = port.split('-', 2)
|
121
|
+
|
122
|
+
valid_port?(port_start) && valid_port?(port_end) && port_start.to_i <= port_end.to_i
|
123
|
+
end
|
124
|
+
|
125
|
+
# Ports to check
|
126
|
+
def portbinds
|
127
|
+
default_protocol = config[:hard] ? 'both' : 'tcp'
|
128
|
+
binds = []
|
129
|
+
|
130
|
+
config[:portbinds].split(',').each do |portbind|
|
131
|
+
portbind = "#{config[:host]}:#{portbind}" unless portbind.include?(':')
|
132
|
+
portbind = "#{portbind}/#{default_protocol}" unless portbind.include?('/')
|
133
|
+
|
134
|
+
protocol = portbind.split('/')[1] || default_protocol
|
135
|
+
address_port = portbind.split('/')[0]
|
136
|
+
address = address_port.split(':')[0]
|
137
|
+
port = address_port.split(':')[1]
|
138
|
+
|
139
|
+
if valid_port_range?(port)
|
140
|
+
# Port range
|
141
|
+
|
142
|
+
first_port, last_port = port.split('-', 2)
|
143
|
+
(first_port.to_i..last_port.to_i).each do |p|
|
144
|
+
binds += portbindings(address, p, protocol)
|
145
|
+
end
|
146
|
+
elsif valid_port?(port)
|
147
|
+
# Single port
|
148
|
+
|
149
|
+
binds += portbindings(address, port, protocol)
|
150
|
+
else
|
151
|
+
critical("Invalid port or port range: #{port}")
|
152
|
+
end
|
153
|
+
end
|
154
|
+
|
155
|
+
binds
|
156
|
+
end
|
157
|
+
|
158
|
+
def portbindings(address, port, protocol)
|
159
|
+
if protocol == 'both'
|
160
|
+
[
|
161
|
+
{ address: address, port: port, protocol: 'tcp' },
|
162
|
+
{ address: address, port: port, protocol: 'udp' }
|
163
|
+
]
|
164
|
+
else
|
165
|
+
[{ address: address, port: port, protocol: protocol }]
|
166
|
+
end
|
167
|
+
end
|
168
|
+
|
169
|
+
# Portbind hash to string
|
170
|
+
def portbind_to_s(portbind)
|
171
|
+
"#{portbind[:address]}:#{portbind[:port]}/#{portbind[:protocol]}"
|
172
|
+
end
|
173
|
+
|
174
|
+
# Check TCP port
|
175
|
+
def check_tcp_port(portbind, okays)
|
112
176
|
Timeout.timeout(config[:timeout]) do
|
113
|
-
connection = TCPSocket.new(address, port
|
177
|
+
connection = TCPSocket.new(portbind[:address], portbind[:port])
|
114
178
|
p connection if config[:debug]
|
115
|
-
okays.push(
|
179
|
+
okays.push(portbind_to_s(portbind))
|
116
180
|
end
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
181
|
+
end
|
182
|
+
|
183
|
+
# Check UDP port
|
184
|
+
def check_udp_port(portbind, okays)
|
185
|
+
Timeout.timeout(config[:timeout]) do
|
186
|
+
s = UDPSocket.new
|
187
|
+
s.connect(portbind[:address], portbind[:port])
|
188
|
+
s.close
|
189
|
+
okays.push(portbind_to_s(portbind))
|
190
|
+
end
|
191
|
+
end
|
192
|
+
|
193
|
+
# Check address:port/protocol
|
194
|
+
def check_port(portbind, okays)
|
195
|
+
case portbind[:protocol].downcase
|
196
|
+
when 'tcp'
|
197
|
+
check_tcp_port(portbind, okays)
|
198
|
+
when 'udp'
|
199
|
+
check_udp_port(portbind, okays)
|
200
|
+
else
|
201
|
+
severity(config[:warn], "Unsupported protocol #{portbind_to_s(portbind)}")
|
124
202
|
end
|
125
203
|
rescue Errno::ECONNREFUSED
|
126
|
-
severity(config[:warn], "Connection refused by #{portbind}")
|
204
|
+
severity(config[:warn], "Connection refused by #{portbind_to_s(portbind)}")
|
127
205
|
rescue Timeout::Error
|
128
|
-
severity(config[:warn], "Connection or read timed out (#{portbind})")
|
206
|
+
severity(config[:warn], "Connection or read timed out (#{portbind_to_s(portbind)})")
|
129
207
|
rescue Errno::EHOSTUNREACH
|
130
|
-
severity(config[:warn], "Check failed to run: No route to host (#{portbind})")
|
208
|
+
severity(config[:warn], "Check failed to run: No route to host (#{portbind_to_s(portbind)})")
|
131
209
|
rescue EOFError
|
132
|
-
severity(config[:warn], "Connection closed unexpectedly (#{portbind})")
|
210
|
+
severity(config[:warn], "Connection closed unexpectedly (#{portbind_to_s(portbind)})")
|
133
211
|
end
|
134
212
|
|
135
213
|
def run
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
(first_port.to_i..last_port.to_i).to_a
|
142
|
-
# Single port
|
143
|
-
else
|
144
|
-
port_bind
|
145
|
-
end
|
146
|
-
end
|
147
|
-
array = []
|
148
|
-
portbinds.each do |port|
|
149
|
-
check_port(port, array)
|
214
|
+
ports = portbinds
|
215
|
+
okays = []
|
216
|
+
|
217
|
+
ports.each do |portbind|
|
218
|
+
check_port(portbind, okays)
|
150
219
|
end
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
ok "All ports (#{config[:portbinds]}) are reachable - HARD: #{config[:hard]} => SUCCESS: #{array}"
|
220
|
+
|
221
|
+
if okays.size == ports.size
|
222
|
+
ok "All ports (#{config[:portbinds]}) are reachable: #{okays.join(', ')}"
|
155
223
|
else
|
156
224
|
severity(config[:warn], 'port count or pattern does not match')
|
157
225
|
end
|
data/bin/metrics-interface.rb
CHANGED
@@ -38,6 +38,16 @@ class InterfaceGraphite < Sensu::Plugin::Metric::CLI::Graphite
|
|
38
38
|
long: '--scheme SCHEME',
|
39
39
|
default: "#{Socket.gethostname}.interface"
|
40
40
|
|
41
|
+
option :excludeinterfaceregex,
|
42
|
+
description: 'Regex matching interfaces to exclude',
|
43
|
+
short: '-X INTERFACE',
|
44
|
+
long: '--exclude-interface-regex'
|
45
|
+
|
46
|
+
option :includeinterfaceregex,
|
47
|
+
description: 'Regex matching interfaces to include',
|
48
|
+
short: '-I INTERFACE',
|
49
|
+
long: '--include-interface-regex'
|
50
|
+
|
41
51
|
option :excludeinterface,
|
42
52
|
description: 'List of interfaces to exclude',
|
43
53
|
short: '-x INTERFACE[,INTERFACE]',
|
@@ -72,9 +82,12 @@ class InterfaceGraphite < Sensu::Plugin::Metric::CLI::Graphite
|
|
72
82
|
|
73
83
|
File.open('/proc/net/dev', 'r').each_line do |line|
|
74
84
|
interface, stats_string = line.scan(/^\s*([^:]+):\s*(.*)$/).first
|
85
|
+
next if config[:excludeinterfaceregex] && (interface =~ /#{config[:excludeinterfaceregex]}/)
|
86
|
+
next if config[:includeinterfaceregex] && (interface !~ /#{config[:includeinterfaceregex]}/)
|
75
87
|
next if config[:excludeinterface] && config[:excludeinterface].find { |x| line.match(x) }
|
76
88
|
next if config[:includeinterface] && !(config[:includeinterface].find { |x| line.match(x) })
|
77
89
|
next unless interface
|
90
|
+
|
78
91
|
if interface.is_a?(String)
|
79
92
|
interface = interface.tr('.', '_')
|
80
93
|
end
|
data/bin/metrics-net.rb
CHANGED
data/bin/metrics-netstat-tcp.rb
CHANGED
@@ -78,6 +78,12 @@ class NetstatTCPMetrics < Sensu::Plugin::Metric::CLI::Graphite
|
|
78
78
|
long: '--port PORT',
|
79
79
|
proc: proc(&:to_i)
|
80
80
|
|
81
|
+
option :type,
|
82
|
+
description: 'Specify the type of the port to get metrics for: Local (default) or remote',
|
83
|
+
short: '-t local|remote',
|
84
|
+
long: '--type local|remote',
|
85
|
+
default: 'local'
|
86
|
+
|
81
87
|
option :disabletcp6,
|
82
88
|
description: 'Disable tcp6 check',
|
83
89
|
short: '-d',
|
@@ -89,7 +95,13 @@ class NetstatTCPMetrics < Sensu::Plugin::Metric::CLI::Graphite
|
|
89
95
|
line.strip!
|
90
96
|
if m = line.match(pattern) # rubocop:disable AssignmentInCondition
|
91
97
|
connection_state = m[5]
|
92
|
-
|
98
|
+
if config[:type] == 'local'
|
99
|
+
connection_port = m[2].to_i(16)
|
100
|
+
elsif config[:type] == 'remote'
|
101
|
+
connection_port = m[4].to_i(16)
|
102
|
+
else
|
103
|
+
unknown "Unknown type level #{config[:type]}. Available values are: local, remote."
|
104
|
+
end
|
93
105
|
connection_state = TCP_STATES[connection_state]
|
94
106
|
if config[:port] && config[:port] == connection_port
|
95
107
|
state_counts[connection_state] += 1
|
@@ -115,7 +127,7 @@ class NetstatTCPMetrics < Sensu::Plugin::Metric::CLI::Graphite
|
|
115
127
|
end
|
116
128
|
|
117
129
|
state_counts.each do |state, count|
|
118
|
-
graphite_name = config[:port] ? "#{config[:scheme]}.#{config[:port]}.#{state}" :
|
130
|
+
graphite_name = config[:port] ? "#{config[:scheme]}.#{config[:port]}.#{config[:type]}.#{state}" :
|
119
131
|
"#{config[:scheme]}.#{state}"
|
120
132
|
output graphite_name.to_s, count, timestamp
|
121
133
|
end
|
data/bin/metrics-ping.rb
CHANGED
@@ -73,7 +73,7 @@ class PingMetrics < Sensu::Plugin::Metric::CLI::Graphite
|
|
73
73
|
|
74
74
|
OVERVIEW_METRICS = %i[packets_transmitted packets_received packet_loss time].freeze
|
75
75
|
STATISTIC_METRICS = %i[min avg max mdev].freeze
|
76
|
-
FLOAT = '(\d+\.\d+)'
|
76
|
+
FLOAT = '(\d+\.\d+)'
|
77
77
|
|
78
78
|
def overview
|
79
79
|
@ping.split("\n")[-2].scan(/^(\d+) packets transmitted, (\d+) received, (\d+)% packet loss, time (\d+)ms/)[0]
|
data/bin/metrics-sockstat.rb
CHANGED
@@ -35,7 +35,7 @@ class MetricsSockstat < Sensu::Plugin::Metric::CLI::Graphite
|
|
35
35
|
description: 'Metric naming scheme, text to prepend to $protocol.$field',
|
36
36
|
long: '--scheme SCHEME',
|
37
37
|
short: '-s SCHEME',
|
38
|
-
default:
|
38
|
+
default: "#{Socket.gethostname}.network.sockets"
|
39
39
|
|
40
40
|
def output_metric(name, value)
|
41
41
|
output "#{@config[:scheme]}.#{name} #{value} #{@timestamp}"
|
@@ -55,7 +55,7 @@ class MetricsSockstat < Sensu::Plugin::Metric::CLI::Graphite
|
|
55
55
|
end
|
56
56
|
|
57
57
|
def read_sockstat
|
58
|
-
|
58
|
+
IO.read('/proc/net/sockstat')
|
59
59
|
rescue StandardError => e
|
60
60
|
unknown "Failed to read /proc/net/sockstat: #{e}"
|
61
61
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sensu-plugins-network-checks
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 5.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sensu-Plugins and contributors
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-01-
|
11
|
+
date: 2020-01-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: sensu-plugin
|
@@ -44,28 +44,28 @@ dependencies:
|
|
44
44
|
requirements:
|
45
45
|
- - '='
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: 1.0.
|
47
|
+
version: 1.0.4
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - '='
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: 1.0.
|
54
|
+
version: 1.0.4
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: net-ping
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
59
|
- - '='
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version:
|
61
|
+
version: 2.0.6
|
62
62
|
type: :runtime
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
66
|
- - '='
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version:
|
68
|
+
version: 2.0.6
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: whois
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -86,14 +86,14 @@ dependencies:
|
|
86
86
|
requirements:
|
87
87
|
- - "~>"
|
88
88
|
- !ruby/object:Gem::Version
|
89
|
-
version: 1.
|
89
|
+
version: '1.2'
|
90
90
|
type: :runtime
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
94
|
- - "~>"
|
95
95
|
- !ruby/object:Gem::Version
|
96
|
-
version: 1.
|
96
|
+
version: '1.2'
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
98
|
name: bundler
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
@@ -108,20 +108,6 @@ dependencies:
|
|
108
108
|
- - "~>"
|
109
109
|
- !ruby/object:Gem::Version
|
110
110
|
version: '2.1'
|
111
|
-
- !ruby/object:Gem::Dependency
|
112
|
-
name: codeclimate-test-reporter
|
113
|
-
requirement: !ruby/object:Gem::Requirement
|
114
|
-
requirements:
|
115
|
-
- - "~>"
|
116
|
-
- !ruby/object:Gem::Version
|
117
|
-
version: '0.4'
|
118
|
-
type: :development
|
119
|
-
prerelease: false
|
120
|
-
version_requirements: !ruby/object:Gem::Requirement
|
121
|
-
requirements:
|
122
|
-
- - "~>"
|
123
|
-
- !ruby/object:Gem::Version
|
124
|
-
version: '0.4'
|
125
111
|
- !ruby/object:Gem::Dependency
|
126
112
|
name: github-markup
|
127
113
|
requirement: !ruby/object:Gem::Requirement
|
@@ -156,28 +142,28 @@ dependencies:
|
|
156
142
|
requirements:
|
157
143
|
- - "~>"
|
158
144
|
- !ruby/object:Gem::Version
|
159
|
-
version: '
|
145
|
+
version: '13.0'
|
160
146
|
type: :development
|
161
147
|
prerelease: false
|
162
148
|
version_requirements: !ruby/object:Gem::Requirement
|
163
149
|
requirements:
|
164
150
|
- - "~>"
|
165
151
|
- !ruby/object:Gem::Version
|
166
|
-
version: '
|
152
|
+
version: '13.0'
|
167
153
|
- !ruby/object:Gem::Dependency
|
168
154
|
name: rdoc
|
169
155
|
requirement: !ruby/object:Gem::Requirement
|
170
156
|
requirements:
|
171
157
|
- - "~>"
|
172
158
|
- !ruby/object:Gem::Version
|
173
|
-
version:
|
159
|
+
version: 6.2.0
|
174
160
|
type: :development
|
175
161
|
prerelease: false
|
176
162
|
version_requirements: !ruby/object:Gem::Requirement
|
177
163
|
requirements:
|
178
164
|
- - "~>"
|
179
165
|
- !ruby/object:Gem::Version
|
180
|
-
version:
|
166
|
+
version: 6.2.0
|
181
167
|
- !ruby/object:Gem::Dependency
|
182
168
|
name: redcarpet
|
183
169
|
requirement: !ruby/object:Gem::Requirement
|
@@ -212,14 +198,14 @@ dependencies:
|
|
212
198
|
requirements:
|
213
199
|
- - "~>"
|
214
200
|
- !ruby/object:Gem::Version
|
215
|
-
version: 0.
|
201
|
+
version: 0.79.0
|
216
202
|
type: :development
|
217
203
|
prerelease: false
|
218
204
|
version_requirements: !ruby/object:Gem::Requirement
|
219
205
|
requirements:
|
220
206
|
- - "~>"
|
221
207
|
- !ruby/object:Gem::Version
|
222
|
-
version: 0.
|
208
|
+
version: 0.79.0
|
223
209
|
- !ruby/object:Gem::Dependency
|
224
210
|
name: yard
|
225
211
|
requirement: !ruby/object:Gem::Requirement
|