Я не знаю ни одного существующего обобщенного Ruby API для сложных межпроцессных конвейеров / перенаправления. Если бы вы могли предложить хороший API, который вы хотели бы использовать, возможно, я мог бы участвовать в реализации.

ли в Ruby автоматизированный способ создания оболочки? Я пытаюсь преобразовать следующий код оболочки в Ruby:

a | b | c... > ...

но единственное решение, которое я нашел до сих пор, это сделать управление буфером самостоятельно (упрощенное, непроверенное, надеюсь, оно поможет мне понять смысл)

a = IO.popen('a')
b = IO.popen('b', 'w+')
Thread.new(a, b) { |in, out|
    out.write(in.readpartial(4096)) until in.eof?
    out.close_write
}
# deal with b.read...

Я думаю, что я ищу способ сказать popen использовать существующий поток вместо создания нового? Или, в качестве альтернативы, метод слияния IO # для подключения выхода а к входу б? Мой нынешний подход становится довольно громоздким, когда количество фильтров растет.

Я знаю оKernel#system('a | b') очевидно, но мне нужно смешать фильтры Ruby с внешними программными фильтрами в общем виде.

Ответы на вопрос(4)

Ваш ответ на вопрос