2011-12-02 18 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 

這應該做的伎倆。

與問候,