rake task を途中で抜けるときはreturnじゃなくてnext
task :do_something do return if some_condition? do_job end
というように条件に合致しない時に return
を使って処理を抜けようとするとこんなエラーになります。
LocalJumpError: unexpected return
これは rake task がメソッドではなくブロックだから起きるので next
を使ってやりましょう。それで抜けれます。
task :do_something do next if some_condition? do_job end
ちなみにnext
は気持ち悪いんのでせめてbreak
を使いたいと思ったんですが、それだと
LocalJumpError: break from proc-closure
になってしまいます。
参考
[ruby – How do I return early from a rake task? – Stack Overflow][1]