【问题标题】:Conditional Dependency in Ruby GemspecRuby Gemspec 中的条件依赖
【发布时间】:2009-12-03 21:08:52
【问题描述】:

我正在构建一个需要安装 json gem 才能工作的 gem。哪个 json gem 无关紧要:json_pure、json-jruby 或基于 C 的 json。

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

有人有这方面的经验吗?

我应该只使用spec.requirements 选项来通知用户他/她需要一个json gem吗?

【问题讨论】:

    标签: ruby rubygems


    【解决方案1】:

    是的,我建议在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 gem 的一个很酷的地方是你只需要 'json' 这样它就可以简化加载链。
    猜你喜欢
    • 2016-03-06
    • 2011-09-23
    • 1970-01-01
    • 1970-01-01
    • 2016-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多