【发布时间】:2017-05-22 21:30:41
【问题描述】:
对 Ruby 非常陌生,无法在这段代码中看到名义上的语法错误:
#! /usr/bin/env ruby
require 'sensu-plugin/metric/cli'
class MetricAvailableUpdates < Sensu::Plugin::Metric::CLI::Graphite
option :scheme,
description: 'Metric naming scheme',
long: '--scheme SCHEME',
short: '-s SCHEME',
default: "#{Socket.gethostname}"
def run
# Get the metrics.
output = %x[/usr/lib/update-notifier/apt-check --human-readable]
output_lines = output.split(/(\n)/)
metrics = {}
updates_pattern = " packages can be updated."
updates = output_lines[0].tr(upgrades_pattern, "").to_i
metrics[:available_updates] = updates
security_updates_pattern = " updates are security updates."
security_updates = output_lines[2].tr(security_updates_pattern, "").to_i
metrics[:available_security_updates] = security_updates
# Print them in graphite format.
metrics.each do |k, v|
output [config[:scheme], k].join('.'), v
end
# Done
ok
end
end
如果语法错误实际上在此部分之前,我可以添加此之前的代码。 编辑:为每个评论请求添加完整的文件内容
完整的错误,如果有用的话:
./metrics-available-updates.rb:29: syntax error, unexpected ',', expecting keyword_end
output [config[:scheme], k].join('.'), v
【问题讨论】:
-
output是什么? -
是父类的方法。如果细节有帮助,你可以在这里看到
output:github.com/sensu-plugins/sensu-plugin/blob/master/lib/…我继承自Graphite,所以是从第21行开始的方法。 -
在这个具体的 sn-p 中没有语法错误。显示整个文件。
-
添加了完整的文件内容。
标签: ruby syntax syntax-error