我有一个命令“svn list xml ...”,它应该产生一个xml输出,其中将解析intrun。请参阅下面的代码。
shellout(cmd) do |io|
output = io.read
begin
doc = ActiveSupport::XmlMini.parse(output)
rescue
#log the error
end
end
calls
def self.shellout(cmd, &block)
IO.popen(cmd, "r+") do |io|
io.close_write
block.call(io) if block_given?
end
end
据我所知,ruby程序不是在等待popen()完成,而是过早地将不完整的xml输出传递给给定的块。
如何确保在返回调用方法之前完成popen()?