Tengo una tarea de rastrillo donde hago algunas verificaciones al principio, si una de las verificaciones falla, me gustaría regresar temprano de la tarea de rastrillo, no quiero ejecutar ninguno de los códigos restantes.
Pensé que la solución sería colocar un retorno donde quería regresar del código, pero recibo el siguiente error
unexpected return
break
y tengo este error: ¡rastrillo abortado! romper el proceso de cierre (Ver seguimiento completo ejecutando la tarea con --trace)next
solo funciona si hay un "nivel" de bloque para salir.Puede usar
abort(message)
desde dentro de la tarea para anular esa tarea con un mensaje.fuente
next
. Quiéralo.Tiendo a usar
abort
cuál es una mejor alternativa en tales situaciones, por ejemplo:fuente
abort
sin salir con un1
código de salida? Las tareas de rastrillo a menudo se usan en la línea de comando para determinar el éxito o el fracaso. ¿Hay un "exitoso"abort
?exit
es una buena manera de salir con éxito.Regrese con un error ❌
Si regresa con un error (es decir, un código de salida de
1
) que querrá usarabort
, que también toma un parámetro de cadena opcional que se generará en la salida:En la línea de comando:
Regrese con éxito ✅
Si regresa sin un error (es decir, un código de salida de
0
), querrá usarloexit
, lo que no requiere un parámetro de cadena.En la línea de comando:
Esto es importante si está usando esto en un trabajo cron o algo que necesita hacer algo después en función de si la tarea de rake fue exitosa o no.
fuente
Si necesita salir de múltiples niveles de bloque, puede usar el fallo .
Por ejemplo
(Ver https://stackoverflow.com/a/3753955/11543 .)
fuente
Si quisiste salir de una tarea de rastrillo sin causar el "rastrillo abortado". mensaje a imprimir, entonces puede usar "abortar" o "salir". Pero "abortar", cuando se usa en un bloque de rescate, finaliza la tarea e imprime todo el error (incluso sin usar --trace). Entonces "salir" es lo que uso.
fuente
Utilicé el
next
enfoque sugerido por Simone Carletti, ya que al probar la tarea de rastrilloabort
, que de hecho es solo una envolturaexit
, no es el comportamiento deseado.Ejemplo:
fuente