Ruby-延迟Ruby程序,直到shell命令执行完成

Ruby-延迟Ruby程序,直到shell命令执行完成,ruby,loops,zip,delay,Ruby,Loops,Zip,Delay,我正在使用shell命令在ruby中压缩文件。然后我将压缩文件上传到服务器。 当我在循环中使用它时,如: dump_files.each do |dump_file| Open3.popen3("zip #{zip_file} #{dump_file}") end 和上载,dump_files数组中的最后一个文件不在上载的zipfile中,但在本地文件中 我认为这是因为压缩文件的时间延迟。 如何将ruby执行延迟到zip命令执行完成?这不应该是: `zip "#{zip_file}"  

我正在使用shell命令在ruby中压缩文件。然后我将压缩文件上传到服务器。 当我在循环中使用它时,如:

dump_files.each do |dump_file|
  Open3.popen3("zip #{zip_file}  #{dump_file}")
end
和上载,dump_files数组中的最后一个文件不在上载的zipfile中,但在本地文件中

我认为这是因为压缩文件的时间延迟。 如何将ruby执行延迟到zip命令执行完成?

这不应该是:

`zip "#{zip_file}"  "#{dump_file}"`
(换句话说,你根本就没有拉拉链?

这不应该是:

`zip "#{zip_file}"  "#{dump_file}"`

(换句话说,你根本没有压缩?

用``代替popen3将解决这个问题

替换

Open3.popen3("zip #{zip_file}  #{dump_file}")


用``代替popen3可以解决这个问题

替换

Open3.popen3("zip #{zip_file}  #{dump_file}")


问题一定是别的。没有什么可以延迟的,因为当您使用backticks运行shell命令时,shell命令在完成之前不会返回到Ruby。尝试
sleep 10
,您将看到。另外,它似乎怀疑您在命令
“zip..”
周围使用了双引号。您应该只运行
zip…
。对不起,朋友们,之前我使用Open3.popen3()执行shell命令。现在,当我使用``而不是popen3()时,它就起作用了。非常感谢。问题一定是别的。没有什么可以延迟的,因为当您使用backticks运行shell命令时,shell命令在完成之前不会返回到Ruby。尝试
sleep 10
,您将看到。另外,它似乎怀疑您在命令
“zip..”
周围使用了双引号。您应该只运行
zip…
。对不起,朋友们,之前我使用Open3.popen3()执行shell命令。现在,当我使用``而不是popen3()时,它就起作用了。多谢各位much@Sayuj:您实际上是在尝试调用名为“zip zipfile dumpfile”的命令,而不是带有参数的
zip
命令。删除双引号@丹尼斯:他甚至不需要在
{}
前后加双引号,因为backtick操作符已经在做字符串插值了。可以我的问题是延迟交货zipping@Sayuj-我想你一定有一些旧文件,你只是认为它有用,但实际上不是。在
irb
中手动检查您的命令。对不起,朋友们,之前我使用Open3.popen3()执行shell命令。现在,当我使用``而不是popen3()时,它就起作用了。比你好多了guys@Sayuj:您实际上是在尝试调用名为“zip zipfile dumpfile”的命令,而不是带有参数的
zip
命令。删除双引号@丹尼斯:他甚至不需要在
{}
前后加双引号,因为backtick操作符已经在做字符串插值了。可以我的问题是延迟交货zipping@Sayuj-我想你一定有一些旧文件,你只是认为它有用,但实际上不是。在
irb
中手动检查您的命令。对不起,朋友们,之前我使用Open3.popen3()执行shell命令。现在,当我使用``而不是popen3()时,它就起作用了。比你们好多了