Ruby有像Python PEX这样的东西

时间:2014-12-31 14:54:03

标签: ruby

Ruby是否有能力将所有相关的gem和应用程序代码存档在像Python的PEX这样的文件中?

要实现Python PEX,Ruby需要像python's zipimport这样的功能,当前版本的Ruby似乎没有。但PEX looks very interesting如果我们有Rails和其他用法。

所以我的问题是“Ruby是否具有PEX功能?”如果不是我怎么能实现它?

2 个答案:

答案 0 :(得分:1)

Ruby有一些类似于PEX的工具。

JRuby Warbler将文件打包到jar或war文件中,这两个文件都是zip文件。

  • Warbler可以将任何内容从简单的Ruby命令行脚本打包到整个Rails应用程序。

  • jar或war包含您自己的文件,以及您可能选择的任何gem,但包含JRuby运行时,Ruby运行时或JVM。

  • 一个典型的用例是将您的应用程序打包成war文件,然后将文件发送到已安装Java服务器的远程服务器,Java服务器运行您的应用程序。 例如,我可以使用Warbler打包我的Rails应用程序以部署到Google AppEngine。

  • 瞄准任何典型的JVM。

Traveling Ruby允许您创建自包含的Ruby应用程序包。

  • 使用Traveling Ruby打包的应用程序是自包含的,并不要求用户安装任何其他依赖项或运行时。

  • 该软件包包含您的应用程序,应用程序的宝石和可移植的Ruby运行时。该软件包往往比应用程序的源代码大得多。

  • 一个典型的用例是向某人发送一个应用程序,以便他们可以在自己的系统上运行它。例如,我想向某人发送我的Rails应用程序并让他在自己的服务器上运行它,而不安装任何其他内容。

  • 瞄准Linux或OSX。

Ruby Ship提供了可移植的Ruby运行时,也可以打包代码。

  • Ruby Ship是在系统上安装Ruby的替代方法。

  • 您可以按原样发送Ruby Ship,也可以将其包含在脚本文件夹或app文件夹中,这样您就可以使用完全可运行的Ruby环境分发您自己的Ruby脚本或应用程序。

  • 一个典型的用例是将Ruby打包给其他人。例如,我想将Ruby 2.2运行时发送给只有Ruby 2.0的人。我可以使用Ruby Ship,我可以选择在包中包含我自己的脚本和应用程序。例如,我有一些使用Ruby 2.2功能编写的数据分析脚本,我想将它们发送给拥有运行旧版Ruby 2.0的系统的人;我可以使用Ruby Ship在类似的系统上构建Ruby 2.2,然后发送我的脚本和船只。

  • 瞄准Linux,OSX或Windows。

对于zip文件管理:

  • 您可以使用任何JRuby Java zip工具或Ruby gem,例如rubyzip

  • 要从zipfile中获取Ruby代码,可以使用ziprequire

答案 1 :(得分:1)

请从项目说明中查看Traveling Ruby

  

旅行Ruby是一个提供自包含,“便携”的项目   Ruby二进制文件:可以在任何Linux发行版上运行的Ruby二进制文件   和任何OS X机器。这允许Ruby应用程序开发人员捆绑这些   使用他们的Ruby应用程序的二进制文件,以便他们可以分发单个   打包给最终用户,无需最终用户首先安装Ruby   或宝石。

唯一的缺点是不支持Windows,这对大多数用户来说都没问题。