tawara's blog

雑記。個人の見解です。

rake タスク内で処理を止めたい場合は return ではなく、next を利用するみたい。

こんにちは。

とある案件のコードの rake タスクにこんなコードがありまして、、、

next unless Time.zone.today.on_weekday?

next? なんじゃこりゃ。となりまして、、、

先輩「rake タスクには return じゃなくて next を使うんだよ!」

と教えてもらいました。

で、調べてみると、、、こんな記事がありました。

stackoverflow.com

いいねがたくさんついている回答いわく、

ブロックのなかでは、returnは使えない(ただし例外はある)

みたいですね。なので next を使うそうです。

ただし別の箇所でメソッドを定義して、そのなかで returnを使用する、というやり方もあるみたいです。

こんなふうなコードが紹介されてました。なるほど。

task :foo do
  do_something
end

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

またひとつ知識が増えてよかったです!

(了)