2009-12-02 55 views
7

我正在构建一个需要安装json gem才能工作的gem。无论哪个json gem:json_pure,json-jruby或基于C的json。Ruby中的条件依赖Gemspec

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

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

我是否应该只使用spec.requirements选项来通知用户他/她需要json宝石?

回答

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 
+0

听起来是个好主意。所有JSON宝石都很酷,因为你只需要'json',所以它可以简化负载链。 – 2009-12-04 13:10:07