У меня есть задача граблей, где я делаю некоторые проверки вначале, если бы одна из проверок перестала работать, я хотел бы возвратиться рано из задачи граблей, я не хочу выполнять любой остающийся код.
Я думал, что решение будет состоять в том, чтобы поместить возврат, где я хотел возвратиться из кода, но я получаю следующую ошибку
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
Я предпочитаю второй вариант.