【问题标题】:Single executable binary of Ruby gemRuby gem 的单个可执行二进制文件
【发布时间】:2019-10-30 06:28:30
【问题描述】:

有哪些选项可用于创建包含我的 Ruby gem 以及 Ruby 运行时的单个二进制文件?

我的目标是能够与其他开发人员共享可执行文件,他们可以简单地从命令行运行可执行文件,并传递类似于 Vagrant 所需的参数。

附:该程序旨在在 Ruby 版本 >= 2.5 的 *nix 操作系统中运行。

【问题讨论】:

  • 制作包含executable 的gem 的典型方法。然后您的用户可以通过gem install 安装它并运行您的可执行文件。
  • @anothermh OP 说 “要在 Ruby 版本 >= 2.5 的 *nix 操作系统中运行” 所以我假设已经安装了 Ruby。
  • @Stefan, @anothermh 感谢gem install 的想法。但是我正在编写的 gem 是我的组织内部的,我们没有自己的 RubyGems 存储库。我将无法将其发布到公共存储库。我想了解他们如何将 Vagrant 打包为单个二进制文件。有什么想法吗?
  • 看来我的评论因为使用了 F 字而被删除。我基本上说过,这听起来像是 OP 基于“包含我的 Ruby gem 和 Ruby 运行时的单个二进制文件”这句话要求一个包含运行时和 gem 的单个二进制文件。如果 OP 可以详细说明它会有所帮助,但如果这是他们的目标,那么根据我过去做同样事情的经验,这可能会是一场噩梦。

标签: ruby compilation executable packaging


【解决方案1】:

ruby-packer,但回购已经死了一段时间。 Ruby 2.5 有分叉。它可以生成适用于 Linux、Mac、Windows 以及可能其他一些的二进制文件。

对于基于 linux 的系统,您可以使用 AppImage(在 google 上找到了一些在图像中添加红宝石的脚本)或 Snapcraft

当您安装了 ruby​​-packer 和依赖项后,只需在应用程序目录中添加 rubyc -o binary-name gem-executable-name 即可。编译大约需要 15 分钟。

【讨论】:

  • 知道 vagrant 使用什么来创建单个二进制文件吗?
  • 我认为他们有一些类似于 ruby​​ packer 的东西,源代码在这里:github.com/hashicorp/vagrant-installers/blob/master/substrate/…
  • 很抱歉劫持了这个帖子,但可以告诉我我需要 32 位还是 64 位 Ruby 和 MS VS 版本?如果 ruby​​c 0.4.0 支持 Ruby2.6?
  • @Vitaly ruby​​-packer 已经有一段时间没有维护了,我认为没有 ruby​​ 2.6 版本。我认为你可以在 32 位 Windows 上编译它,它应该可以工作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-02
  • 1970-01-01
  • 2011-01-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多