Bundler可以自动解决Ruby版本的依赖关系吗?

时间:2016-10-31 18:14:54

标签: ruby dependencies bundler

我有一个Ruby项目(一本厨师食谱),我想支持多个版本的Ruby,包括老化的Ruby 2.1。但是,我的许多依赖宝石(仅用于开发和测试)现在将Ruby版本要求放在2.2或更高版本上,使我的构建失败并出现如下错误:

$ bundle install
Resolving dependencies...
ERROR: your_gem-version requires ruby version >= 2.2.2, which is incompatible with the current version, ruby 2.1.5p273

我已经在我的Gemfile中添加了一个case语句,要求为旧的Ruby版本提供特定的gem版本,但随着越来越多的gems指定这些Ruby版本的要求,它很快就失控了。 / p>

有没有办法让捆绑商自动排除那些不受支持的宝石版本并选择一个?

注意:我知道我可以解决"这有一个Gemfile.lock文件,但我更喜欢让我的Travis构建拉出最新的依赖项,所以我可以抓住这样的问题。它是一本厨师食谱,因此无论如何都会忽略锁定文件;它只适用于开发人员,我在Gemfile中需要的宝石只是开发工具,而不是运行时要求。

1 个答案:

答案 0 :(得分:0)

bundler可能会在将来为我的问题提供长期解决方案,但目前有一个非常好的解决方案:在我的Gemfile中添加以下内容:

ruby RUBY_VERSION

(要求捆绑商> = 1.12)

现在我在解决gem依赖关系时会考虑当前的Ruby版本,而且我的Travis版本很高兴。