2014-11-04 11 views
0

기본적으로 나는 내부에 pwe와 pws 파일을 포함하고있는 zip 파일들을 만들고 있습니다.rails rubyzip 새로운 zip 파일 안에 여러 개의 zip 파일 복사본 만들기

은 다음 코드는이 개 파일의 (a PWS와 PWE)를 포함 orgname_org_member_orguser1.zip 로 명명 된 zip 파일의 무리를 생성

내가 코드를하도록 할
@successful_orgs.each do |org| 
    file = "#{RAILS_ROOT}/my-data/#{org[:location]}_#{org[:member]}_#{org[:username]}.zip" 
    generate_file(ups_file, org) 
end 

    def generate_file(file, org) 
    zipfile = Zip::ZipFile.open(file, Zip::ZipFile::CREATE) 
    pwe_text, pws_text = MyGenerator.password 
    pwe_file = "#{RAILS_ROOT}/tmp/#{org[:location]}_#{org[:member]}.pwe" 
    pws_file = "#{RAILS_ROOT}/tmp/#{org[:location]}_#{org[:member]}.pws" 

    File.open(pwe_file, 'w') { |file| file.write(pwe_text) } 
    File.open(pws_file, 'w') { |file| file.write(pws_text) } 

    zipfile.add("#{org[:location]}_#{org[:member]}.pwe", pwe_file) 
    zipfile.add("#{org[:location]}_#{org[:member]}.pws", pws_file) 
    zipfile.close 

    File.delete(pwe_file) 
    File.delete(pws_file)  
    end 

하고있는 일을 (생성 zip 파일을 저장하고 지정한 경로에 저장하십시오.)

위의 내용 외에도 위에서 만든 모든 zip 파일을 포함하는 all.zip이라는 다른 zip 파일을 만들고 싶습니다.

의미 all.zip => file1.zip, file2.zip 등

나는 위의 내 코드에서 그 논리를 incoporate하는 방법을 잘 모르겠습니다. 어떤 도움을 주시면 감사하겠습니다.

EDIT : 디렉토리의 모든 파일을 검색하고 추가하고 싶지 않습니다. 위 코드에서 생성 된 zip 파일 만 추가하고 싶습니다. 이 작업을 수행하여 추가 압축을 얻을 않을거야

zip_files = [] 
@successful_orgs.each do |org| 
    file = "#{RAILS_ROOT}/my-data/#{org[:location]}_#{org[:member]}_#{org[:username]}.zip" 
    zip_files << file 
    generate_file(file, org) 
end 

all_zipped = Zip::ZipFile.open("#{RAILS_ROOT}/tmp/all.zip", Zip::ZipFile::CREATE) 
zip_files.each do |f| 
    all_zipped.add(zip_file) 
end 

참고 :

답변

1

당신은 반복적으로 새로운 zip 파일에 추가 한 후 배열에있는 모든 zip 파일 경로를 수집 할 수 있습니다.

+0

@faraz에 감사드립니다.하지만 디렉토리의 모든 파일을 검색하고 추가하고 싶지는 않습니다. 위 코드에서 생성 된 zip 파일 만 필요합니다. – Micheal