Ruby Gemspec中的条件依赖

我正在构建一个需要安装json gem的gem,以便它可以工作。 哪个json gem:json_pure,json-jruby或基于C的json无关紧要。

有没有一种在gemspec中定义它的好方法? 这个响应建议为每个版本维护一个完全独立的gem,但似乎必须有一个更好的方法。

有没有人有这方面的经验?

我应该只使用spec.requirements选项向用户发出他/她需要json gem的通知吗?

是的,我会在spec.requirements建议一个简单的文本要求。 我还建议在gem首次加载时进行某种加载链接:

 # in init.rb and/or rails/init.rb: unless Object.const_defined?(:JSON) begin require 'json_pure' rescue LoadError begin require 'json-ruby' rescue LoadError require 'json' end end end unless Object.const_defined?(:JSON) raise "Could not load gem MyGem; did you install one of json_pur, json-ruby, or the C-based json library?" end