【发布时间】:2013-07-24 04:59:47
【问题描述】:
我有以下代码 sn-p,我试图将其作为整数和字符串数组返回给 Shoes
Shoes.setup do
gem 'snmp'
end
class SNMPManager
require 'snmp'
include SNMP
attr_accessor :hostname, :framerate
def initialize(params = {})
@hostname = params.fetch(:hostname, 'localhost')
@framerate = params.fetch(:framerate, 25)
end
def getValues
Manager.open(:host => @hostname, :mib_modules => ["SNMPv2-MIB"]) do |manager|
poolArray = []
ifTable = ObjectId.new("1.3.6.1.4.1.15248.2.5.1.3.1")
manager.walk(ifTable) do |row|
poolArray.push(row.inspect)
end
groups = poolArray.group_by{ |s| s.split(',').first[/\d+$/] }
@values = groups.map{ |key, ary| ary.map{ |s| s[/value=(\S+)/, 1] } }
end
end
def to_s
return @values
end
end
Shoes.app do
#@hostname = edit_line
#man =SNMPManager.new(:host => @hostname)
man = SNMPManager.new
man.getValues
puts 'SNMP Space Monitor'
man.to_s.each {|v|
@note = para "#{v[1]} \t(Pool: #{v[0]}) \tCapacity: #{v[3].to_i} \tFree Protons: #{v[2].to_i} \tPercent Free: %#{(v[3].to_f/v[2].to_f*100).round(2)}"
}
end
由于某种原因,Shoes 将其显示为:
但如果我正常运行 ruby 脚本,并用 puts 输出它,它会正确显示,并正确计算响应。 我知道我遗漏了一些明显的东西,但看不到它是什么。 我正在尝试将数组转换为另一个数组,但这似乎完全是个问题。
【问题讨论】:
-
对 setup() 的调用对我来说会导致错误:
uninitialized constant Encoding::US_ASCII。我在鞋子邮件列表上问了一个关于这个的问题,显然鞋子几乎是一个独立的包,让鞋子导入其他模块并不是一件好事。此外,您的 to_s() 方法仍然没有返回字符串。