无法在我的 Rakefile 上的 class 中调用 "sh"

Can't call "sh" inside a class on my Rakefile

我是 ruby 的新手,我正在编写一个非常基本的 Rakefile。它包含一个 class Installer,它有一个调用 sh 的方法 shell,如下所示:

class Installer
  def shell(command)
    sh command
  end
end

当我 运行 它时,它抛出

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

我做了一些研究,看看出了什么问题,但大多数类似的错误似乎与 framework/library 相关,而我的问题似乎是无法从方法内部调用 sh .

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

来自 Kernel 模块的 system 方法 returns 如果命令 运行 来自 shell returns 非零则为 false值。

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

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

您可以使用它作为从 shell 命令中非零 returns 退出的方法。

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