-->

压缩和解在Rails目录[关闭](Zipping a directory in Rails [clo

2019-09-19 14:00发布

我如何去Ruby on Rails中荏苒一个目录? 我已经试过rubyzip没有成功。 我并不需要压缩的目录中的内容单独只是压缩的目录本身。

Answer 1:

你将不得不遍历目录中的商品添加压缩文件中的一个条目。

def compress(path)
  gem 'rubyzip'
  require 'zip/zip'
  require 'zip/zipfilesystem'

  path.sub!(%r[/$],'')
  archive = File.join(path,File.basename(path))+'.zip'
  FileUtils.rm archive, :force=>true

  Zip::ZipFile.open(archive, 'w') do |zipfile|
    Dir["#{path}/**/**"].reject{|f|f==archive}.each do |file|
      zipfile.add(file.sub(path+'/',''),file)
    end
  end
end

http://grosser.it/2009/02/04/compressing-a-folder-to-a-zip-archive-with-ruby/

另一种方式的命令去做

Dir["*"].each do |file|
  if File.directory?(file)
    #TODO add OS specific,
    #  7z or tar .
    `zip -r "#{file}.zip" "#{file}"`
  end
end

http://ruby-indah-elegan.blogspot.com/2008/12/zipping-folders-in-folder-ruby-script.html

更新

谢谢马哈茂德·哈立德的编辑/更新

新版本使用Zip::File.open代替Zip::ZipFile.open



Answer 2:

您可以通过创建目录的存档焦油tar -cvf your_dir.tar your_dir/

然后压缩在使用Rails焦油 -

def gzip_my_dir_tar(your_dir_tar_file)
  content = File.read(your_dir_tar_file)
  ActiveSupport::Gzip.compress(content)
end

它已经回答了在Rails 3的:如何生成的请求压缩文件



文章来源: Zipping a directory in Rails [closed]