根据the manual,我似乎在努力应对捆绑器的标准功能。
使用:platforms
选项或platforms
块
我想根据所使用的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
但是,在运行bundle install
You cannot specify the same gem twice with different version requirements.
You specified: activesupport (~> 2.8.9) and activesupport (~> 3.1.3)
答案 0 :(得分:3)
您不需要2个不同的Gemfiles来实现特定于平台的宝石要求。 只需检查RUBY_VERSION并将您的宝石放入某种条件子句中:
if(defined?(JRUBY_VERSION))
gem 'warbler'
else
case(RUBY_VERSION)
when('1.8.7')
gem 'ruby-debug'
when('1.9.2')
gem 'ruby-debug19'
when('1.9.3')
gem 'debugger'
end
end
这应该可以解决问题。
最诚挚的问候,
答案 1 :(得分:2)
我很确定这不可行。 gemfile不能具有使用不同版本指定的相同gem。不仅在不同的平台内,甚至不在不同的组中(group_ruby_18,group_ruby_19),然后通过尝试 捆绑安装--without group_ruby_18
所以这也会失败。
之前我遇到过这个问题,我找到的唯一解决办法是拥有2个不同的GEMFILES。