Скрытие системной команды приводит к рубину

Насколько легко скрыть результаты от системных команд в ruby? Например, некоторые мои скрипты запускают

system "curl ..." 

и я бы не хотел видеть результаты загрузки.

Спасибо!

Ответ 1

Вы можете использовать более сложную popen3 для управления STDIN, STDOUT и STDERR отдельно, если хотите:

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

Если вы хотите отключить определенные потоки, вы можете их игнорировать или если важно перенаправить или интерпретировать этот вывод, у вас все еще есть доступный.

Ответ 2

Простейшие способы, кроме popen:

  • Используйте% x вместо системы. Он автоматически подключится к

    rval = %x{curl ...}       #rval will contain the output instead of function return value
    
  • Вручную подключиться к /dev/null. Работа в UNIX как система, а не Windows

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

Ответ 3

Простейшим является перенаправление stdout:)

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