Ruby是否有能力将所有相关的gem和应用程序代码存档在像Python的PEX这样的文件中?
要实现Python PEX,Ruby需要像python's zipimport这样的功能,当前版本的Ruby似乎没有。但PEX looks very interesting如果我们有Rails和其他用法。
所以我的问题是“Ruby是否具有PEX功能?”如果不是我怎么能实现它?
答案 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,这对大多数用户来说都没问题。