条件gem依赖

是否可以在安装时有条件地设置对gem的依赖? 这是我的情况,希望澄清这个问题。

我维护的gem取决于json gem。 但是,我经常使用jruby,它有一个json gem的端口,叫做json-jruby。 要解决这个问题,我必须为每个依赖项构建两个单独的gem。 我想构建一个gem,它要么依赖于json或json-jruby,要么在安装时检查并使用正确的依赖关系。

任何人都有一个很好的解决方案吗?

嗯,

我相信一个人可以编写多个依赖项,因为我注意到了这样做的gem。 但我建议你不要这样做。 无论你在这里插入的代码有多简单,当你考虑用户将加载一个依赖于另一个依赖于另一个的gem时,即使是一段代码或其他代码的逻辑中的小故障也可以使整个依赖训练是一场噩梦。

所以,我会按原样留下你的kludge。 此外,我建议你有一个用户可以下载的tarball。 我不得不手动提取gem中的代码,其配置代码不允许我安装它们。

在这里结帐有点教程: http : //wiki.github.com/rdp/ruby%5Ftutorials%5Fcore/gem

它显示了如何根据installee使用的ruby版本安装不同版本的依赖项。

(简短的回答 – 它不是那么容易)