是否可以在安装时有条件地设置对 gem 的依赖?这是我的情况,希望能澄清这个问题。
我维护的一个 gem 依赖于 json gem。但是,我经常使用 jruby,它有一个名为 json-jruby 的 json gem 端口。要解决这个问题,我必须为每个依赖项构建两个单独的 gem。我想构建一个 gem,它要么说它依赖于 json 或 json-jruby,要么它在安装时检查并使用正确的依赖项。
有人对此有很好的解决方案吗?
唔,
我相信可以编写多个依赖项,因为我注意到 gems 似乎可以做到这一点。但我建议你不要这样做。无论您在此处插入的代码多么简单,当您考虑到用户将加载一个依赖于另一个依赖于另一个的 gem 时,即使是一段或另一段代码的逻辑中的一个小故障也可以使整个依赖训练一场噩梦。
所以,我会让你的杂物保持原样。此外,我建议您有一个用户也可以下载的 tarball。我不得不手动提取配置代码不允许我安装它们的 gem 中的代码。
在这里查看一些教程:https ://github.com/rdp/ruby_tutorials_core/wiki/gem (https://en.wikibooks.org/wiki/Ruby_Programming/RubyGems)
它显示了如何根据安装者使用的 ruby 版本安装不同版本的依赖项。
(简短的回答——它并不像应该的那么容易)