压缩目录中的所有文件

我正在使用RubyZip尝试压缩目录中的所有文件。 这是我的class级:

require 'zip/zip' require 'zip/zipfilesystem' class Lesson  :destroy accepts_nested_attributes_for :assets, :reject_if => lambda { |a| a[:asset_file_name].blank? } def bundle bundle_filename = "public/attachments/#{self.id}/#{self.id}.zip" Zip::ZipFile.open(bundle_filename, Zip::ZipFile::CREATE) { |zipfile| Dir.foreach("public/attachments/#{self.id}") do |item| zipfile.add( item, "public/attachments/") end } File.chmod(0644, bundle_filename) self.save end end 

目前,这是使用我想要的名称创建一个zipfile,但目录中的文件没有正确压缩。 它们不是作为文件压缩而是作为目录压缩。

如果您在Linux服务器上运行,可以尝试使用unix_utils :

 tmp_filename = UnixUtils.zip "public/attachments/#{self.id}" bundle_filename = "public/attachments/#{self.id}/#{self.id}.zip" FileUtils.mv tmp_filename, bundle_filename File.chmod 0644, bundle_filename 

第一行将public/attachments/#{self.id}中的所有内容压缩到tmp目录中的文件( tmp_filename )。 然后移动并将此文件重命名为bundle_filename