sensu-plugins-network-checks 4.1.1 → 5.0.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 +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
|