我使用rbox rye gem运行一些测试以验证我可以ping /连接到主机,然后验证主机上是否存在某些目录/文件,然后将特定文件上载到主机
大多数功能都已完成,但缺少一件事,那就是验证我是否可以实际连接到主机。
我使用以下方法建立主机连接。 该方法的返回值是连接字符串对象(username@rye_10.16.11.100)
def connection()
con = Rye::Box.new("#{@host}")
con
end
稍后在代码中我想验证连接是否成功:
if ((file.connection()) == #{HOST})
puts "Connected to Host"
else
puts "Not able to connect to Host"
end
但是,测试失败并出现以下错误:
gems/rye-0.9.12/lib/rye/box.rb:408:in `==': undefined method `host' for 0:Fixnum (NoMethodError)
from test_rye.rb:99:in `<main>'
我假设comparrisson运算符无法测试返回的rbox主机对象。 有没有办法可以表现出那种比较?
由于
答案 0 :(得分:0)
看起来你的@host变量持有num而不是主机名。查看Rye :: Box的源代码,您可以看到比较方法正在比较您初始化它的主机名:https://github.com/delano/rye/blob/2d9ffd6d18688cc85ec1a004e35d12d8909b5ed6/lib/rye/box.rb#L408
我会采取以下步骤:
在con = Rye::Box.new("#{@host}")
之前添加调试器以检查@host变量实际上是否为字符串。
如果是,请在if ((file.connection()) == #{HOST})
之前添加一个调试器,以查看file.connection返回的内容。
作为旁注,您应该在最后一个语句中将#{HOST}更改为@host;这是访问实例变量的正确方法。
希望能够澄清这个问题!