ruby rake

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.