Ruby - задерживает программу ruby ​​до завершения выполнения команды оболочки - PullRequest
0 голосов
/ 03 августа 2011

Я использую команду оболочки, чтобы заархивировать файл в ruby.Затем я загружаю заархивированный файл на сервер.когда я использую его в цикле, например:

dump_files.each do |dump_file|
  Open3.popen3("zip #{zip_file}  #{dump_file}")
end

И при загрузке последний файл в массиве dump_files отсутствует в загруженном zip-файле, но присутствует в локальном файле.

Iдумаю, это происходит из-за задержки, чтобы сжать файл.Как я могу отложить выполнение ruby ​​до завершения выполнения команды zip?

Ответы [ 2 ]

3 голосов
/ 03 августа 2011

Разве это не должно быть:

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

(другими словами, вы вообще не молитесь?)

0 голосов
/ 03 августа 2011

Использование `` вместо popen3 решит проблему

заменить

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

с

`zip #{zip_file}  #{dump_file}`
...