Я пытаюсь обслуживать динамически генерируемые файлы в приложении 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 app и отправка его оттуда, но тогда файл будет сохранен там, чего я бы предпочел, чтобы не произошло.
Редактировать: если я не ошибаюсь, send_file блокирует петицию до тех пор, пока файл не будет отправлен, чтобы она могла работать ...
Любые другие советы или мнения?
Заранее спасибо