2011-12-02 61 views
5

我似乎与我的想法是捆绑的标准功能挣扎,根据the manual 到specifiy该宝石应该在需要使用:platforms选项或platforms与捆绑和不同平台的宝石要求工作

某些平台的能力

我想specifcy一个不同版本的宝石依赖于红宝石的版本中使用

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

01时
You cannot specify the same gem twice with different version requirements. 
You specified: activesupport (~> 2.8.9) and activesupport (~> 3.1.3) 
+0

你可以在Gemfile中平台特定的要求,请查看我的回答 – klaffenboeck

回答

2

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

所以这也会失败。

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

+2

感谢,似乎很奇怪,我还以为这将是一个非常普遍的要求。 – Rob

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 

这应该做的伎俩。

与问候,