Rails 3:如何根据请求生成压缩文件

时间:2011-02-17 14:58:51

标签: ruby-on-rails

如何根据请求生成压缩文件。

我有这个控制器

def create    
    send_data generate_tgz("#{RAILS_ROOT}/tmp/example.txt"), :filename => 'export.tgz'    
end

但它给了我一个在generate_tgz上找不到的方法。

是插件还是宝石?我需要什么吗?我可以生成一个zip文件吗?

编辑:

def generate_tgz(file)
    system("tar -czf #{RAILS_ROOT}/tmp/export-result #{RAILS_ROOT}/tmp/export")
    content = File.read("#{RAILS_ROOT}/tmp/export-result")
    #ActiveSupport::Gzip.compress(content)    
end

这会创建一个tgz,但是当我解压缩它时,我得到app / c3ec2057-7d3a-40d9-9a9d-d5c3fe3ffd6f / home / tmp / export / and_the_files

我希望它只是:export / the_files

1 个答案:

答案 0 :(得分:3)

该方法不存在。您可以使用ActiveSupport::Gzip轻松创建它。

def generate_tgz(file)
  content = File.read(file)
  ActiveSupport::Gzip.compress(content)
end