不能打电话给#34; sh"在我的Rakefile上的一个类中

时间:2017-10-28 19:19:40

标签: ruby rake rakefile

我是ruby的新手,我正在编写一个非常基本的Rakefile。它包含一个类Installer,其方法shell可以像这样调用sh

class Installer
  def shell(command)
    sh command
  end
end

当我运行它时,它会抛出

NoMethodError: undefined method `sh' for #<Installer:0x00007ffde8098b78>`

我做了一些研究,看看有什么不对,但大多数类似的错误似乎与框架/库相关,而我的问题似乎是它无法调用sh从方法内部。

这是问题吗?如果是这样,我有什么选择(考虑到我希望程序在命令失败时崩溃(我相信系统或反引号在这里没有帮助)。

2 个答案:

答案 0 :(得分:0)

如果从shell运行的命令返回非零值,system模块中的Kernel方法将返回false。

irb(main):002:0> system('exit 1')
=> false

irb(main):003:0> system('exit 0')
=> true

您可以使用此方法退出shell命令的非零返回。

答案 1 :(得分:0)

sh的调用更改为Rake.sh。至少,这似乎对我有用。