4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

依存関係にあるrakeタスクをキャンセルする方法

Last updated at Posted at 2017-07-11

2017-07-12更新
以下の内容は、特定の状況下でしか発生しない現象で、通常はrakeのタスク実行中に例外が発生すると以降のタスクはキャンセルされます。
なので、rakeタスク中の例外でキャンセルされない現象が発生している場合も、この記事で書いた修正方法は 参考にせず 、例外を握りつぶしているコードを特定して修正してください。ぼくのプロジェクトの場合は、依存しているgem内で例外が無視されるようになっていました。

内容

rakeタスク hoge に依存しているタスク fuga があるとします。
なんらかの条件でタスク fuga を実行せずにキャンセルする方法でちょっと迷ったのでまとめました。

問題


task :hoge do
  if some_check
    # ここで処理を中断。 `fuga` タスクも実行したくない
  end
  puts 'hoge'
end

task fuga: :hoge do
  puts 'fuga'
end 

方法

abortexit を使う
raisereturnnext では、 hoge タスク自体は中断されるが、 hoge に依存している fuga タスクが実行されてしまう。

task :hoge do
  if some_check
    abort 'なんかエラーがおきました'
  end
  puts 'hoge'
end
4
3
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?