ruby - ¿Cómo fallar explícitamente una tarea en el rastrillo de rubí?
rake (2)
Puede usar abort("message")
para fallar con gracia la tarea de rake.
Imprimirá el message
a la salida estándar y saldrá con el código 1.
El código de salida 1 es un error en sistemas similares a Unix.
Ver Kernel#abort para más detalles.
Digamos que tengo un rakefile como este:
file ''file1'' => some_dependencies do
sh ''external tool I do not have control over, which sometimes fail to create the file''
???
end
task :default => ''file1'' do
puts "everything''s OK"
end
Ahora, si no pongo nada en lugar de ???, recibo el mensaje OK, incluso si la herramienta externa no puede generar el archivo. ¿Cuál es la forma correcta de informar a rake, que la tarea ''file1'' ha fallado y debería abortar (con suerte presentando un mensaje significativo, como qué tarea falló)? Lo único que puedo pensar ahora es hacer una excepción allí, pero eso simplemente no parece correcto
PS La herramienta siempre devuelve 0 como código de salida.
Utilice el método raise
o fail
como lo haría con cualquier otro script de Ruby ( fail
es un alias para raise
). Este método toma una cadena o excepción como un argumento que se utiliza como mensaje de error que se muestra al finalizar el script. Esto también hará que la secuencia de comandos devuelva el valor 1 al shell que realiza la llamada. Está documentado here y en otros lugares.