Rubygems可选依赖项

Kon*_*ase 8 ruby rubygems

如何向rubygems添加可选依赖项,因为它不支持它?

用例:

  • 我有一个库,它依赖于Backports,Extlib,Facets或ActiveSupport.在过去,我只是没有添加任何这种依赖,因为人们可以选择(阅读:它可以很好地与他们使用的任何东西),但人们抱怨很多关于图书馆没有开箱即用,或者他们会相信它取决于ActiveSupport(在某些情况下,对某些人来说是不行的).所以目前它依赖于Backports,因为它是最小的.虽然这意味着人们会安装Backports,如果他们安装我的库,即使他们可能不会在运行时使用它.
  • 我想依赖于不同的宝石取决于环境(例如MRI上的Johnson/Rubinius,JRuby上的TheRubyRhino,MacRuby上的Lyndon).

我认为的一种方法是劫持extconf.rb.我可以在那里进行系统检查.但是,这感觉不对.而且,如果这是唯一的方法,我该怎么做呢?如何触发从那里安装额外的宝石?system 'gem install ...'

And*_*imm 4

您是否尝试过为未满足的依赖关系提供信息丰富的错误消息以消除这些误解?对于zombie-chaser,我不会将gosu作为依赖项,但是如果人们尝试在没有gosu的情况下使用它的图形版本,我会通知他们需要安装gosu。

  • 我这样做了,但有些人不在乎并尖叫“错误”。另外,我希望它能够正常工作。尽管这可能是要走的路(因为 ruby​​gems 无法处理这种情况)。 (2认同)