Ruby Tbox Rye未定义的rbox对象比较方法

时间:2015-01-06 18:15:02

标签: ruby

我使用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主机对象。 有没有办法可以表现出那种比较?

由于

1 个答案:

答案 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;这是访问实例变量的正确方法。

希望能够澄清这个问题!