Ruby / Chef:临时文件的删除时间早于我需要它们

时间:2014-01-06 18:29:23

标签: ruby oracle11g chef

我有以下食谱:

require 'fileutils'
require 'zip'
#require 'rubygems'
#require 'progressbar'

oraclePath = "\\\\MyServ\\Oracle Client\\Oracle_11gR2\\win64_11gR2_client.zip"

begin
tmpDir = Dir.mktmpdir("ora-")

puts "#{tmpDir}"
FileUtils.cp_r("#{oraclePath}","#{tmpDir}")
Zip::File.open("#{tmpDir}/win64_11gR2_client.zip") do |zipfile|
  zipfile.each do |file|
    f_path = File.join("#{tmpDir}", file.name)
    FileUtils.mkdir_p(File.dirname(f_path))
    zipfile.extract(file, f_path)
  end
end

#temporary for testing
FileUtils.cp("c:/myresp.rsp", "#{tmpDir}/client")

system("#{tmpDir}/client/setup.exe -silent -responseFile \"#{tmpDir}/client/myresp.rsp\" -logLevel finest")

ensure
  # remove the temp directories
  FileUtils.remove_entry_secure tmpDir
end

我的问题似乎是对setup.exe的调用依次调用另一个cmd进程...所以我我之前从原来的setup.exe调用返回安装实际上已经完成。还有另一种方法吗?

1 个答案:

答案 0 :(得分:1)

您可能希望使用Chef的执行资源,而不是Ruby的system命令:

http://docs.opscode.com/chef/resources.html#execute