有条件的Gem依赖关系

8
有没有可能在安装时有条件地设置对gem的依赖关系?以下是我的情况,希望能澄清问题。
我维护了一个依赖于json gem的gem。然而,我经常使用jruby,它有一个叫做json-jruby的json gem端口。为了解决这个问题,我必须为每个依赖项构建两个单独的gems。我想构建一个gem,它要么说它依赖于json,要么依赖于json-jruby,或者在安装时检查并使用正确的依赖项。
有没有人有一个好的解决方案?
2个回答

3

1
链接已移至:http://en.wikibooks.org/wiki/Ruby_Programming/RubyGems#How_to_install_different_versions_of_gems_depending_on_which_version_of_ruby_the_installee_is_using - Peter Wagenet
Yehuda Katz说这是一个不好的想法。他建议在gemspec中放置一个条件,并构建两个版本。 - Peter Wagenet
gemspec中的条件语句可以控制"jruby与mri",但目前还不能控制1.8和1.9版本的gems。我同意Yehuda的观点,这是一个不好的主意,但我目前还不知道其他解决方法。 - rogerdpack

3

嗯,我相信可以编写多个依赖项,因为我注意到了一些看似能够实现这一点的宝石。但是我建议不要这样做。无论您在此处插入的代码有多简单,当您考虑到用户将加载一个依赖于另一个依赖于另一个的宝石时,即使一个代码片段或另一个代码片段中的逻辑出现小故障,整个依赖关系链也可能成为噩梦。

因此,我会保留您的修补程序。此外,我建议您提供用户可以下载的tarball。我曾经不得不手动提取某些配置代码不允许我安装它们的宝石内部的代码。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接