Ruby IO.popen方法的问题

Ruby IO.popen方法的问题,ruby,popen,Ruby,Popen,我有一个命令“svnlistxml…”,它应该生成一个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,

我有一个命令“svnlistxml…”,它应该生成一个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()