ฉันกำลังพยายามให้บริการไฟล์ที่สร้างขึ้นแบบไดนามิกในแอป Rails ดังนั้นเมื่อผู้ใช้คลิกลิงก์ใดลิงก์หนึ่ง ไฟล์จะถูกสร้างขึ้นและส่งไปยังไคลเอนต์โดยใช้ send_data
ไฟล์นี้ไม่ได้ตั้งใจที่จะนำมาใช้ซ้ำ: เป็นไฟล์ข้อความสั้น ๆ และการสร้างใหม่ควรมีราคาไม่แพงมากเนื่องจากจะไม่มีการอัพโหลดมากนัก แต่ถ้าจำเป็นหรือสะดวกก็สามารถเก็บไว้ในฐานข้อมูลได้จึงสร้างเพียงครั้งเดียว
ก่อนอื่น ฉันต้องการสร้างไฟล์ในหน่วยความจำ และส่งไปยังคอนโทรลเลอร์ ฉันกำลังพยายามเก็บถาวรสิ่งนี้:
def DownloadsController < ApplicationController
def project_file
project = Project.find(params[:id])
send_data project.generate_really_simply_text_file_report
end
end
แต่ฉันไม่รู้วิธีสร้างสตรีมในหน่วยความจำ ดังนั้นจึงไม่มีการสร้างไฟล์ในระบบไฟล์
อีกทางเลือกหนึ่งคือการสร้างไฟล์ด้วยชื่อแบบสุ่มในไดเร็กทอรี tmp ของแอป Rails และส่งจากที่นั่น แต่ไฟล์นั้นจะถูกเก็บไว้ที่นั่น ซึ่งเป็นสิ่งที่ฉันไม่อยากให้เกิดขึ้น
แก้ไข: ถ้าฉันจำไม่ผิด send_file จะบล็อกคำร้องจนกว่าไฟล์จะถูกส่งจึงจะทำงานได้...
คำแนะนำหรือความคิดเห็นอื่นใด?
ขอบคุณล่วงหน้า