Ruby 条件gem依赖项

Ruby 条件gem依赖项,ruby,rubygems,jruby,Ruby,Rubygems,Jruby,是否可以在安装时有条件地设置对gem的依赖关系?以下是我的情况,希望能澄清这个问题 我维护的一个gem依赖于json gem。然而,我经常使用jruby,它有一个json gem端口,称为json jruby。为了解决这个问题,我必须为每个依赖项构建两个独立的gem。我想构建一个gem,要么说它依赖于json或jsonjruby,要么在安装时检查并使用正确的依赖关系 有人有好的解决办法吗?嗯 我相信一个人可以编写多个依赖项,因为我注意到gems似乎可以做到这一点。但我建议你不要这样做。不管你在这

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

我维护的一个gem依赖于json gem。然而,我经常使用jruby,它有一个json gem端口,称为json jruby。为了解决这个问题,我必须为每个依赖项构建两个独立的gem。我想构建一个gem,要么说它依赖于json或jsonjruby,要么在安装时检查并使用正确的依赖关系

有人有好的解决办法吗?

我相信一个人可以编写多个依赖项,因为我注意到gems似乎可以做到这一点。但我建议你不要这样做。不管你在这里插入的代码多么简单,当你认为用户将加载一个依赖另一个依赖于另一个的GEM时,即使是一个代码或另一个代码中的一个小故障也会使整个依赖性训练成为一个噩梦。p>
所以,我会让你的胡言乱语保持原样。此外,我建议你有一个tarball,用户也可以下载。我不得不手动提取gems内部的代码,因为gems的配置代码不允许我安装它们

在此处签出教程:()

它展示了如何根据被安装者使用的ruby版本安装不同版本的依赖项


(简短的回答——这并不像应该的那么简单)

链接已经转到:耶胡达·卡茨说这是个坏主意。建议在gemspec中加入一个条件并构建两个版本。gemspec中的条件可以控制“jruby vs mri”,但(到目前为止)无法控制1.8 vs 1.9 gems。我同意耶胡达的观点,这是个坏主意,但我目前还不知道除此之外还有其他解决办法。