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

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

我有这个控制器

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

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

它是插件还是gem? 我需要什么吗? 我可以生成一个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

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

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