使用bundler和不同的平台gem要求

Rob*_*Rob 5 ruby bundler

根据手册,我似乎在努力克服我认为是捆绑器的标准功能. 使用:platforms选项或platforms块,某些平台需要指定gems的能力

我想根据所使用的ruby版本指定不同版本的gem

source "http://rubygems.org"
gem "trollop", "~> 1.16.2"
gem "chronic", "~> 0.6.4"
gem "highline", "~> 1.6.2"
gem "colorize", "~> 0.5.8"
gem "queryparams", "~> 0.0.3"

platforms :ruby_18 do
  gem "json"
  gem "activesupport", "~>2.8.9"
end

platforms :ruby_19 do
  gem "activesupport", "~>3.1.3"
end
Run Code Online (Sandbox Code Playgroud)

但是这在运行时失败了 bundle install

You cannot specify the same gem twice with different version requirements.
You specified: activesupport (~> 2.8.9) and activesupport (~> 3.1.3)
Run Code Online (Sandbox Code Playgroud)

小智 2

我很确定这是不可能的。一个 gemfile 不能使用不同版本指定相同的 gem。不仅在不同的平台中,甚至不在不同的组中(group_ruby_18、group_ruby_19),然后尝试捆绑安装 --without group_ruby_18

所以这也会失败。

我以前遇到过这个问题,我找到的唯一解决方案是有 2 个不同的 GEMFILES。

  • 谢谢,看起来很奇怪,我原以为这是一个非常常见的要求。 (2认同)