Ruby Gemspec中的条件依赖

时间:2009-12-02 21:25:40

标签: ruby rubygems

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

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

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

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

1 个答案:

答案 0 :(得分:2)

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

# 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