红宝石Gemspec中的条件依赖性[英] Conditional Dependency in Ruby Gemspec

本文是小编为大家收集整理的关于红宝石Gemspec中的条件依赖性的处理方法,想解了红宝石Gemspec中的条件依赖性的问题怎么解决?红宝石Gemspec中的条件依赖性问题的解决办法?那么可以参考本文帮助大家快速定位并解决问题。

问题描述

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

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

有人有这方面的经验吗?

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

推荐答案

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

本文地址:https://www.itbaoku.cn/post/786328.html