为正确的红宝石版本安装预编译的红宝石宝石?

时间:2019-05-30 07:05:00

标签: ruby rubygems

我需要在没有编译器的机器上安装一些具有本机扩展的ruby gem,而我必须为几个不同的ruby版本安装。

我的计划是拥有一些CI管道来下载gem资源,对其进行编译并将其上传到私有Rubygems存储库中。

我正在考虑使用gem-compiler来建造宝石。我发现默认情况下,gem绑定到次要的Ruby版本(例如2.5),并且无法在其他版本上运行。有一个命令行选项可以禁用ABI锁定,但是它看上去很可怕,并带有“请勿使用”警告。

我一直在阅读Rubygems API和命令文档,但是我找不到一种方法来为同一gem版本安排不同的二进制文件,以便为正确的ruby版本下载正确的二进制文件。

这有可能吗?怎么样?

还是我应该寻求更原始的东西,例如为每个Ruby版本使用不同的私有存储库?

1 个答案:

答案 0 :(得分:0)

我不确定是否可以通过rubygems API来混合不同的二进制文件。我认为您主要是指e。 G。 Linux上的.so文件?如果是这样,那么您可以尝试通过不同的ruby版本在本地计算机上实际进行编译(使用rvm或任何其他方式来具有多个ruby版本;我编译到版本目录中,例如/Programs/Ruby/2.5.2等),然后进行构建绑定。一旦有了.so文件,您还可以将其放入ruby gem中。我为此滥用了lib/。

我不确定如何确保可以轻松地将其安装在目标计算机上,但是您始终可以添加一些bin / ruby​​文件来完成安装。

我想第一步是可以确保构建正确的版本。一旦可行,就应该进行分发。 Rubygems也不是在做魔术。

编辑:您是在指Windows吗?既然您链接到luis,并且luis过去在Windows上做了一些工作。 Windows可能会使事情变得更加困难……任务似乎并不简单。