我在Ruby中创建了一个包装器,它做了很多东西,设置环境变量,然后使用Open3库执行外部程序,将参数(和ENV)传递给外部进程。
一切都运行良好,我从外部流程获得实时输出。但是,偶尔外部程序会要求输入。我现有的代码不适用于此,提供输入似乎不起作用。
这是使用options
运行外部程序的函数。
def run_tf(options = '--help')
puts '-= Begin TerraForm Output =-'
exit_code = 0
Open3.popen2e("terraform #{options}") do |i, oe, t|
oe.each { |line| puts line }
exit_code = t.value.exitstatus
end
puts '-= End TerraForm Output =-'
exit_code
end
如何让它接受STDIN?