Obliga a Ruby a ocultar el camino hacia atrás en la excepción
-
27-10-2019 - |
Pregunta
Hago algunas tareas habituales con Rakefile
, como compilación, vinculación, etc.
Cuando la compilación falla, Ruby muestra el retroceso completo en el que ocurre el error de la tarea, pero es realmente inútil para mí, aún más: este retroceso oculta los errores de compilación.
$ rake
mkdir -p build
llvm-as source/repl.ll -o build/repl.bc
llvm-as: source/repl.ll:6:22: error: expected value token
call i32 @fputc(i8 'x', i32 0)
^
rake aborted!
Command failed with status (1): [llvm-as source/repl.ll -o build/repl.bc...]
/usr/local/lib/ruby/1.9.1/rake.rb:993:in `block in sh'
/usr/local/lib/ruby/1.9.1/rake.rb:1008:in `call'
/usr/local/lib/ruby/1.9.1/rake.rb:1008:in `sh'
/usr/local/lib/ruby/1.9.1/rake.rb:1092:in `sh'
...
Cómo esconder todo después de "Rake abortado!" ?
Solución
Parece que está utilizando el comando "SH" en la tarea de rastrillo para iniciar el compilador. En ese caso, debe atrapar un TimeRor de ejecución, para obtener este error. Algo como esto:
task "foo" do
begin
sh "bar"
rescue RuntimeError => e
puts e.message
exit(1)
end
end
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow