2009-01-27 128 views
8

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

有一个宝石,我坚持这取决于JSON宝石。但是,我经常使用jruby,它有一个名为json-jruby的json gem的端口。要解决这个问题,我必须为每个依赖构建两个独立的gem。我想要构建一个gem,要么说它依赖于json或json-jruby,要么在安装时检查并使用正确的依赖关系。

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

回答

3

嗯,

我相信,因为我已经注意到这似乎做这个宝石可以多个代码依赖。但我会建议不要这样做。不管你在这里插入的代码有多简单,当你考虑到用户将加载一个依赖于另一个依赖于另一个的gem时,即使是一段代码或另一段代码的逻辑中的小故障也可以使整个依赖训练一场噩梦。

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

3

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

它显示了如何安装不同的版本取决于什么版本的红宝石installee使用依赖。

(简短的回答 - 这是不容易,因为它应该是)

+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 – 2010-09-21 01:01:54