2011-02-17 68 views
6

如何根據請求生成壓縮文件。Rails 3:如何根據請求生成壓縮文件

我有這個控制器

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,但是當我解壓我得到的應用程序/ c3ec2057-7d3a-40d9-9a9d-d5c3fe3ffd6f /家庭的/ tmp /導出/ and_the_files

我會像它只是:出口/ the_files

+0

你是在說這個頁面給出的例子http://api.rubyonrails.org/classes/ActionController/Streaming.html?我不認爲在Rails中實現了這樣的方法。這只是一個例子。 – Dogbert 2011-02-17 15:10:04

+0

@Dogbert:是的,就是這樣的例子。 – Nerian 2011-02-17 15:13:48

回答

3

該方法不存在。您可以使用ActiveSupport::Gzip輕鬆創建它。

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