Rails: à la volée en streaming de sortie au format zip?

J'ai besoin de servir des données de ma base de données dans un fichier zip, en streaming sur la volée tels que:

  • Je n'écris pas un fichier temporaire sur le disque
  • Je ne compose pas la totalité du fichier dans la RAM

Je sais que je peux faire du streaming génération de fichiers zip à l'filesystemk à l'aide de ZipOutputStream comme ici. Je sais aussi que je peux faire du streaming de sortie à partir d'un rails de contrôleur par la mise en response_body à un Proc comme ici. Ce dont j'ai besoin (je pense) est un moyen de brancher ces deux choses ensemble. Puis-je faire des rails de servir une réponse à partir d'un ZipOutputStream? Puis-je obtenir ZipOutputStream me donner des différentiels de morceaux de données que je peux alimenter mon response_body Proc? Ou est-il un autre moyen?

  • ZipOutputStream ne peut pas le faire parce qu'il cherche avant en arrière à travers le flux lors de l'écriture de la zippé données (voir ZipOutputStream#update_local_headers, appelé à partir de ZipOutputStream#close). Ainsi, il est impossible de se servir des blocs de données avec ZipOutputStream avant l'opération est terminée.
InformationsquelleAutor kdt | 2011-01-25