Rails3 генерирует и передает большие файлы - PullRequest
1 голос
/ 20 сентября 2010

У моего приложения Rails3 есть определенный запрос, который генерирует большой CSV (20 МБ +) на лету, а затем предлагает пользователю загрузить файл (пока он генерируется).

Я заметил, покаобновление с Rails 2.3.x с использованием «render: text => proc» больше не работает.Сейчас я работаю над решением, которое позволит мне продолжать работать аналогичным образом.

Тот факт, что файл создается на лету, пока еще не причинял никакой боли.Только некоторые пользователи могут получить доступ к этой функции (например, ежемесячные отчеты и т. Д.).

В основном я планирую использовать два разных подхода: 1. добавить пользовательский рендер, который позволит мне снова использовать процедуру 2. создать файлв потоке и используйте «send_data», чтобы попытаться выполнить потоковую передачу файла во время его генерации.

Я еще не реализовал, поэтому, если кто-то может предоставить некоторую информацию, это может помочь разобраться каккод обновлен.

Спасибо !!!

1 Ответ

0 голосов
/ 10 августа 2011

Я работаю над очень похожей проблемой, и я решил раскошелиться на csv_builder, чтобы добавить поддержку потоковой передачи. У меня есть рабочая версия прототипа, в которой обработчик шаблона возвращает proc, а не строку. Внутри proc я подключаю csv_builder для прямой записи в выходной поток. Есть некоторые глупые уловки, которые я должен был использовать, чтобы заставить его работать в тестировании и разработке, потому что вывод TestResponse не является полноценным потоком ввода-вывода, которого ожидает CSV.

посмотрите: https://github.com/fawce/csv_builder

...