【问题标题】:Conditional gem dependencies条件 gem 依赖
【发布时间】:2009-01-27 17:57:21
【问题描述】:

是否可以在安装时有条件地设置对 gem 的依赖?这是我的情况,希望能澄清这个问题。

我维护的一个 gem 依赖于 json gem。但是,我经常使用 jruby,它有一个名为 json-jruby 的 json gem 端口。要解决这个问题,我必须为每个依赖项构建两个单独的 gem。我想构建一个 gem,要么说它依赖于 json 或 json-jruby,要么它在安装时检查并使用正确的依赖项。

谁有好的解决办法?

【问题讨论】:

    标签: ruby rubygems jruby


    【解决方案1】:

    嗯,

    我相信可以编写多个依赖项,因为我注意到 gems 似乎可以做到这一点。但我建议你不要这样做。无论您在此处插入的代码多么简单,当您考虑到用户将加载一个依赖于另一个依赖于另一个的 gem 时,即使一段代码或另一段代码的逻辑中的一个小故障也可以使整个依赖训练一场噩梦。

    所以,我会保持原样。此外,我建议您有一个用户也可以下载的 tarball。我不得不手动提取配置代码不允许我安装它们的 gem 中的代码。

    【讨论】:

      【解决方案2】:

      在这里查看一些教程:https://github.com/rdp/ruby_tutorials_core/wiki/gem (https://en.wikibooks.org/wiki/Ruby_Programming/RubyGems)

      它显示了如何根据安装者使用的 ruby​​ 版本安装不同版本的依赖项。

      (简短的回答——它并不像应该的那么容易)

      【讨论】:

      • Yehuda Katz 说这是个坏主意。并建议在 gemspec 中添加条件并构建两个版本。
      • gemspec 中的条件可以控制“jruby 与 mri”,但(到目前为止)无法控制 1.8 与 1.9 的宝石。我同意 yehuda 的观点,这是一个坏主意,但目前我不知道除此之外还有什么解决方法。
      猜你喜欢
      • 2016-03-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-18
      相关资源
      最近更新 更多