У меня вопрос о размещении больших динамически генерируемых активов и Heroku.Heroku: обслуживание больших динамически генерируемых активов без локальной файловой системы
Мое приложение будет предлагать массовую загрузку поднабора его базовых данных, который будет состоять из большого файла (> 100 МБ), создаваемого один раз каждые 24 часа. Если бы я работал на сервере, я бы просто записал файл в общий каталог.
Но, как я понимаю, это невозможно с Героку. Каталог/tmp может быть записано, но гарантированное время жизни файлов там seems to be defined с точки зрения одного цикла запроса-ответа, а не фонового задания.
Я хотел бы использовать S3 для размещения файла загрузки. S3 gem поддерживает потоковые загрузки, но только для файлов, которые уже существуют в локальной файловой системе. Похоже, что размер контента должен быть известен заранее, что в моем случае невозможно.
Так что это похоже на уловку-22. Я пытаюсь избежать создания гигантской строки в памяти при загрузке на S3, но S3 поддерживает только потоковые загрузки файлов, которые уже существуют в локальной файловой системе.
С учетом приложения Rails, в котором я не могу писать в локальную файловую систему, как я могу обслуживать большой файл, создаваемый ежедневно, без создания большой строки в памяти?
У меня такая же проблема. Я еще не занимался этим, но я предполагал, что могу писать в файловую систему/tmp у моего работника delayed_job, и он будет стоять достаточно долго, чтобы загрузить файл на S3. Интересно услышать, что предлагают люди! –