2009-12-02 81 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