【问题标题】:Rake task return value for Ruby system() callRuby system() 调用的 Rake 任务返回值
【发布时间】:2014-07-03 05:37:12
【问题描述】:

我有一个类似于以下内容的 Rake 任务。我正在尝试运行系统命令,并返回其错误值。在返回之前,我想显示一条消息,例如“[OK]”或“[FAILED]”。

使用此代码,Rake 每次都会返回成功。

如何让 Rake 任务返回正确的错误值?

task :build do
  status = system BUILD_SHELL_COMMAND
  puts status ? "[OK]" : "[FAILED]"
  status
end

【问题讨论】:

  • 这可能有点突然:exit($?) unless (system(...))

标签: ruby rake rake-task rake-test


【解决方案1】:

似乎没有办法从 rake 任务中指定“返回值”。如果 system() 方法失败,任务应该会失败。

执行此操作的标准方法是使用 Rake 的 sh 实用方法:

task :build do
  sh BUILD_SHELL_COMMAND
end

但是,要显示错误/成功消息,对于有问题的情况,以下内容将不起作用:

task :build do
  sh BUILD_SHELL_COMMAND or fail “[FAILED]”
  puts “[OK]"
end

因为一旦 shell 命令失败,它就不会显示失败消息(实际上这将是一条更长的非平凡消息:),这正是我们想要的。

这行得通:

task :build do
  system BUILD_SHELL_COMMAND or fail “[FAILED]”
  puts “[OK]"
end

【讨论】:

    猜你喜欢
    • 2013-03-27
    • 2011-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-22
    • 2013-03-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多