2011-12-02 11 views
5

での作業私はバンドラの標準機能だと思った何と戦っているように見える、宝石がバンドラと異なるプラットフォームの宝石の要件

:platformsオプションまたは platformsブロックを使用して、特定のプラットフォーム用に必要とされるべきであることをspecifiyする the manual 能力に従って

私はルビーのバージョンに依存して宝石の異なるバージョンをspecifcyしたいがbundle install

01を実行している場合しかし、これが失敗した

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 

を使用しました

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、group_ruby_19)でさえも試してみてください。 バンドルインストール--without group_ruby_18

これも失敗します。

私は以前この問題がありました。私が見つけた唯一の解決策は2つの異なるGEMFILESを持つことでした。

+2

おかげで、奇数、私はこれはかなり一般的な要件だろうと思っているだろうと思われます。 – Rob

3

プラットフォーム固有のgem要件を達成するために、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 

。よろしく付き

関連する問題