如何使用Ruby on Rails创建一个zip归档文件?

13

我有一个目录里有很多文件。我想将其中的一些文件压缩成一个zip存档文件。

我可以看到有各种方法和工具可供使用。我可以使用像rubyzip这样的gem或运行exec并使用命令行工具。

这将影响我正在开发的系统的重要部分,因此我希望能够获得一些反馈和/或关于如何在Rails中创建zip文件的指导。

3个回答

14

RubyZip 是一个不错的选择。我之前在社交应用中使用它来压缩私信中的附件。但是,如果要压缩的文件很大,建议使用后台处理,例如使用Delayed Job


谢谢你的回答。关于rubyzip,它是否得到维护或者至少完全可用?还有感谢你提供delayed_job,听起来是我接下来想要做的不错的一步。 - marcgg
我不再参与那个项目了,但我相信它是可行的。无论如何,您仍然可以使用exec并将命令发送到Linux以执行它。 - khelll
4
Rubyzip是一个不错的选择;如果您需要扩展代码以便解压缩归档内容,您可以很容易地添加代码,并且不需要依赖于任何外部程序。一般来说(即使可能并非您的情况),使用gem是更好的解决方案,我的看法是这样的。 - apaderno
它能否从流或Redis中进行压缩? - baash05

5
如果你只是压缩文件而没有其他操作,我建议使用exec或system或%x来进行压缩,因为安装和使用gem来完成这样的小任务并不太合理。
但是,如果你想做更多的事情而不仅仅是压缩一些目录,并利用gem提供的其他功能,那么显然的选择就是使用rubyzip gem。

3
仅仅用宝石包装文件有何不妥之处?能否详细说明一下? - marcgg
3
你只需要添加一个不必要的抽象层。Exec 直接调用系统命令,加载 gem 会带来内存开销,而没有充分的理由。如果你打算使用 gem 的其他功能,那么尽管使用它。 - bensie
1
有时候..像Heroku这样的系统会隐藏zip应用程序..而且zip...无法工作。我可以使用gem进行压缩,但不能使用原始调用。 - baash05
1
我实际上深入挖掘了一些东西... 另外还有3个托管平台将zip文件从其虚拟机中排除。 - baash05

-3
如果gzip是一个选项,我建议在ActiveSupport中嵌入Gzip。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接