Python предоставляет две удобные функции для вызова подпроцессов, которые могут быть сбойными, subprocess.check_call
и subprocess.check_output
. В основном,Ruby-эквивалент подпроцесса Python.check_call/check_output
subprocess.check_call(['command', 'arg1', ...])
порождает указанную команду как подпроцесс, блоки, и проверяет, что подпроцесс завершается успешно (возвращается ноль). Если нет, это исключает. check_output
делает то же самое, за исключением того, что он захватывает stdout подпроцесса и возвращает его как байтовую строку.
Это удобно, потому что это одно выражение Python (вам не нужно настраивать и управлять подпроцессом по нескольким строкам кода), и нет никакого риска забыть проверить возвращаемое значение.
Каковы идиоматические эквиваленты Ruby для check_call
и check_output
? Мне известно, что глобальное значение $?
дает возвращаемое значение процесса, но это было бы неудобно - точка исключения состоит в том, что вам не нужно вручную проверять коды ошибок. There are numerous ways to spawn a subprocess in Ruby, но я не вижу таких, которые предоставляют эту функцию.