Как я могу сгенерировать файлы и затем сжать / сжать с Heroku? - PullRequest
5 голосов
/ 28 октября 2010

Я хочу сделать обратное.

Вместо того, чтобы разархивировать и добавить файлы коллекции в S3, я хочу

По запросу пользователя:

  1. сгенерировать кучу xml файлов
  2. архивирование файлов xml с некоторыми изображениями (уже существующие изображения, размещенные на s3)
  3. скачать zip

Кто-нибудь знает хороший способ сделать это? Я думаю, я мог бы справиться с этим без проблем на обычной машине, но Heroku несколько усложняет ситуацию тем, что имеет файловую систему только для чтения.

1 Ответ

4 голосов
/ 28 октября 2010

Из документации heroku в файловой системе только для чтения :

Для записи доступны две директории: ./tmp и ./log (в корневом каталоге вашего приложения). Если вы хотите временно удалить файл на время запроса, вы можете записать имя файла, например, # {RAILS_ROOT} / tmp / myfile _ # {Process.pid}. Нет никакой гарантии, что этот файл будет там при последующих запросах (хотя это может быть), поэтому его не следует использовать для любого вида постоянного хранилища.

Вы сможете довольно легко записать свои сгенерированные xml-файлы в tmp/ и отслеживать имена, загружать и записывать файлы s3 в один и тот же каталог и (возможно?) Вызывать команду zip до тех пор, пока вывод находится в tmp/, затем отправьте файл в браузер с правильным типом MIME, чтобы запросить загрузку. Меня будет интересовать только размер файла и наличие у heroku недокументированного ограничения на то, что они разрешат в каталоге tmp. Тем более, что вы выполняете это действие только для одноразовой загрузки в течение одного запроса, я думаю, у вас есть хорошие шансы сделать это.

Редактировать: Оглядываясь немного, вы могли бы иметь возможность использовать что-то вроде RubyZip , чтобы создать свой zip-файл, если вы хотите избежать системных вызовов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...