Erstellen mehrerer CSV-Dateien und Herunterladen aller Dateien in einem Zip-Archiv mit Rails
Ich suche nach einer Möglichkeit, mehrere CSV-Dateien zu erstellen und sie mit einer Anforderung in meiner Rails-Anwendung als ZIP-Archiv herunterzuladen.
Um das Archiv zu erstellen benutze ich Rubyzip Gem - um es herunterzuladen einfach die in Rails integrierte Funktion send_data. Das Problem, das ich habe, ist, dass die Add-Funktion von Rubyzip einen Pfadnamen zum Laden von Dateien erfordert. Es gibt jedoch keinen Pfad, da meine CSV-Dateien innerhalb derselben Anforderung erstellt werden.
Einiger Code:
# controller action to download zip
def download_zip
zip = @company.download_all
send_data zip, filename: "abc.zip", type: 'application/zip'
end
# method to create zip
def download_all
Zip::File.open('def.zip', Zip::File::CREATE) do |zipfile|
self.users.each do |user|
#some magic to combine zipfile.add() and user.to_csv
end
end
end
# method to create csv
def to_csv
CSV.generate do |csv|
#build awesome csv
end
end
Gibt es eine Möglichkeit, meine csv-Dateien vorübergehend in einem Verzeichnis zu speichern, in dem ich einen Pfadnamen an zipfile.add () übergeben kann?
Nizza Wochenende allen und viel Spaß beim Programmieren!