Saya mencoba menyajikan file yang dibuat secara dinamis di aplikasi Rails, jadi ketika pengguna mengklik tautan tertentu, file tersebut dibuat dan dikirim ke klien menggunakan send_data.
File ini tidak dimaksudkan untuk digunakan kembali: merupakan file teks pendek dan pembuatan ulang harus sangat murah karena tidak akan banyak didownload; tetapi jika perlu atau nyaman saya dapat menyimpannya di database sehingga hanya dibuat satu kali.
Pertama, saya ingin membuat file di memori, dan mengirimkannya ke pengontrol. Saya mencoba mengarsipkan sesuatu seperti ini:
def DownloadsController < ApplicationController
def project_file
project = Project.find(params[:id])
send_data project.generate_really_simply_text_file_report
end
end
Tapi saya tidak tahu cara menghasilkan aliran di memori, jadi tidak ada file yang dibuat di sistem file.
Pilihan lain adalah membuat file dengan nama acak di direktori tmp aplikasi Rails dan mengirimkannya dari sana, tetapi kemudian file tersebut akan disimpan di sana, sesuatu yang saya tidak ingin terjadi.
Sunting: Kalau tidak salah, send_file memblokir petisi sampai file terkirim, sehingga bisa berfungsi...
Ada saran atau pendapat lain?
Terima kasih sebelumnya