Ruby Gemspec中的条件依赖性

7
我正在构建一个需要安装json gem才能正常工作的gem。无论是哪个json gem都可以:json_pure、json-jruby或基于C的json。
有没有一种好的方法在gemspec中定义这个?这个回答建议为每个版本维护一个完全独立的gem,但似乎应该有更好的方法。
有人有相关经验吗?
我应该只使用spec.requirements选项来提醒用户需要安装json gem吗?
1个回答

2

我建议在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

听起来是个好主意。所有 JSON 宝石的酷炫之处在于你只需要 require 'json',这样就可以简化加载链。 - Jimmy Z

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接