首页 文章

Ruby Gemspec中的条件依赖

提问于
浏览
7

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

有没有一种在gemspec中定义它的好方法? This response建议为每个版本维护一个完全独立的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
    

相关问题