Некоторое время назад я написал вопрос относительно использования временных файлов в приложении rails.В этом конкретном случае я решил использовать tempfile
Это вызывает проблему, если я также хочу использовать директиву x-sendfile
( в качестве параметра в Rails 2 или какопция конфигурации в Rails 3 ), чтобы отправка файлов осуществлялась непосредственно моим веб-сервером, а не моим приложением rails.
Итак, я подумал о том, чтобы сделать что-то вроде этого:1014 * Эта настройка имеет одну проблему: файл удаляется перед отправкой!
С одной стороны, tempfile
удалит файл, как только закончится блок Tempfile.open
.С другой стороны, x-sendfile
делает вызов send_file асинхронным - он очень быстро возвращается, поэтому у сервера едва ли есть время для отправки файла.
Мое лучшее возможное решение сейчас заключается в использовании невременных файлов (вместо файлаof Tempfile), а затем задача cron, которая периодически удаляет временную папку.Это немного не элегантно, поскольку:
- Я должен использовать собственную схему именования временных файлов
- Файлы остаются в папке tmp дольше, чем нужно.
Есть ли лучшая настройка?Или, по крайней мере, есть «успешный» обратный вызов для асинхронного send_file
, поэтому я могу стереть f, когда это будет сделано?
Большое спасибо.