ocultando los resultados del comando del sistema en ruby

¿Qué tan fácil es ocultar los resultados de los comandos del sistema en ruby? Por ejemplo, algunos de mis scripts se ejecutan.

system "curl ..." 

Y no preferiría ver los resultados de la descarga.

Puede usar el popen3 más sofisticado para tener el control de STDIN, STDOUT y STDERR por separado si lo desea:

 Open3.popen3("curl...") do |stdin, stdout, stderr, thread| # ... end 

Si desea silenciar ciertas transmisiones, puede ignorarlas, o si es importante redirigir o interpretar esa salida, todavía tiene esa opción disponible.

Las formas más fáciles que no sean popen:

  1. Utilice% x en lugar de sistema. Se canalizará automáticamente

     rval = %x{curl ...} #rval will contain the output instead of function return value 
  2. Canalizar manualmente a / dev / null. Trabajando en UNIX como sistema, no en Windows

     system "curl ... > /dev/null" 

El más simple es redireccionar stdout 🙂

 system "curl ... 1>/dev/null" # same as `curl ... 1>/dev/null` 

Para seguir trabajando con el system sin modificar su comando:

 system('curl ...', :err => File::NULL) 

Fuente

Intereting Posts