1

次のような Rake タスクがあります。私がやろうとしているのは、システム コマンドを実行し、そのエラー値を返すことです。戻る前に「[OK]」や「[FAILED]」などのメッセージを表示したい。

このコードでは、Rake は毎回成功を返します。

Rake タスクが正しいエラー値を返すようにするにはどうすればよいですか?

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

1 に答える 1

2

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

シェルコマンドが失敗するとすぐに、失敗メッセージが表示されないためです (実際には、より長い重要なメッセージになります:)。

これは機能します:

task :build do
  system BUILD_SHELL_COMMAND or fail “[FAILED]”
  puts “[OK]"
end
于 2014-05-15T06:24:11.463 に答える