2011-02-17 25 views
6

İsteğe bağlı olarak sıkıştırılmış dosyalar nasıl oluşturulur.Raylar 3: İsteğe bağlı olarak sıkıştırılmış bir dosya nasıl oluşturulur

Bu kontrolör

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

var Ama bu bana generate_tgz bulunmayan bir metot verilmiştir.

Bu bir eklenti mi, mücevher mi? Bir şeye ihtiyacım var mı? Bunun yerine bir zip dosyası oluşturabilir miyim?

Düzenleme: Bu tgz yaratır ama

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 

bunu sıkıştırması zaman olsun app/c3ec2057-7d3a-40d9-9a9d-d5c3fe3ffd6f/home/tmp/ihracat/and_the_files

isterim Sadece bunun olması gibi: export/the_files

+0

Bu sayfada verilen örneklerden bahsediyorsunuz http://api.rubyonrails.org/classes/ActionController/Streaming.html? Rails'de uygulanan böyle bir yöntem olduğunu sanmıyorum. Bu sadece bir örnekti. – Dogbert

+0

@Dogbert: Evet, bu örnek. – Nerian

cevap

3

Yöntem mevcut değil. ActiveSupport::Gzip kullanarak kolayca oluşturabilirsiniz.

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

Güzel! Değiştirmem gereken tek şey şudur: filename => 'export.tgz' to: filename => 'export.zip'. Ve birçok dosyayı bir pakette nasıl paketlerim? – Nerian

+0

Pek çok dosyayı bir seferde birleştirmek için bir arşiv oluşturmanız gerekir. Raylar bunu varsayılan olarak desteklemez. –

+0

Arşiv yapmak için kabuk araması kullanmayı başardım. Şimdi oldukça iyi çalışır, ancak oldukça kolay olmayan bir dizin hiyerarşisi yaratır. Düzenlemeyi kontrol et. – Nerian

İlgili konular