1. ホーム
  2. ルビー

[解決済み】rakeタスクから早く戻るにはどうしたらいいですか?

2022-04-02 05:34:21

質問

rake タスクで、最初にいくつかのチェックを行い、もしチェックが失敗したら、rake タスクから早く戻り、残りのコードを実行したくありません。

コードから戻りたい場所にリターンを置けば解決すると思ったのですが、以下のエラーが発生します。

unexpected return

解決方法は?

Rakeのタスクは基本的にブロックです。ブロックはラムダを除いてreturnをサポートしませんが next これは、rakeタスクでは、メソッドでreturnを使うのと同じ効果があります。

task :foo do
  puts "printed"
  next
  puts "never printed"
end

あるいは、コードをメソッド内に移動して、メソッド内でreturnを使用することもできます。

task :foo do
  do_something
end

def do_something
  puts "startd"
  return
  puts "end"
end

私は2番目の選択が好きです。