我是ruby的新手,我正在编写一个非常基本的Rakefile。它包含一个类Installer
,其方法shell
可以像这样调用sh
:
class Installer
def shell(command)
sh command
end
end
当我运行它时,它会抛出
NoMethodError: undefined method `sh' for #<Installer:0x00007ffde8098b78>`
我做了一些研究,看看有什么不对,但大多数类似的错误似乎与框架/库相关,而我的问题似乎是它无法调用sh
从方法内部。
这是问题吗?如果是这样,我有什么选择(考虑到我希望程序在命令失败时崩溃(我相信系统或反引号在这里没有帮助)。
答案 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
。至少,这似乎对我有用。