2016-04-20 5 views
0

開発中のgemserverの代わりに私のローカルから宝石を入れようとしています。私のGemfileは次のようになります。私はbundleを実行したときしかし、私が得るグループなしでグループを無視するバンドル

--- 
BUNDLE_WITHOUT: production 

[!] There was an error parsing `Gemfile`: You cannot specify the same gem twice with different version requirements. 
You specified: appy_core (>= 0) and appy_core (= 1.7.4.5). Bundler cannot continue. 

bundle install --without productionを実行すると、同じ結果を生成

group :development do 
    gem "appy_core", path: "../engines/core" 
end 

group :production do 
    gem "appy_core", '1.7.4.5' 
end 

マイ.bundle/configがに設定されています。

+0

問題は、問題はあなたが同じことを指定することはできません 'で、生産ENVを無視ではなく、 –

+0

@ Bundlerは、開発に生産宝石をインストールしませんが、バージョン要件が異なる場合でもエラーを投げますか? –

+0

同じ宝石を2回指定してもエラーは発生します。 –

答えて

1

/が知っていて、私が思いついた唯一のソリューション:

Gemfile

gem 'appy_core', 
    git: 'git://github.com/.......', 
    branch: '1.7.4.5' # put the name of the branch that corresponds 

ローカル環境のシェルでは:

$ bundle config local.appy_core /path/to/engines/core 

は今、あなたは地元でやりたいですブランチ、それをローカルにコミットし、お楽しみください。


Gemfileので

の作品ハックはプレーンルビーで、一つはルビーを使用する場合がありますが特長:永久的なシェルの設定で

どこか:Gemfile

alias bundle="USE_DEV_VERSION=1 bundle" 

if ENV['USE_DEV_VERSION'] 
    gem "appy_core", path: "../engines/core" 
else 
    gem "appy_core", '1.7.4.5' 
end 

今度はbundle installは、「パッチ適用済み」環境の外ではローカルの開発版と標準的な宝石を使用します。

+0

私の '。/ bundle/config'に' BUNDLE_LOCAL__APPY_CORE: "/ Users/daniel/engines/core"があります。しかし、私が 'bundle install 'を実行すると、ローカルソースを使用していません。リモートソースはgemサーバーなので、Gemfileに 'git'と' branch'を指定しませんでした。 –

+0

1.ローカルソースを使用していないことをどのように知っていますか?私は 'bundler'がローカル設定をどのように扱うのか分かりませんが、これは時折発見されたほとんど文書化されていない機能です。 'git'と' branch'を指定できないのはなぜですか? – mudasobwa

+0

@mudsaobwa 1.バージョンバンドラがインストールされているとは、マスタと同じではありません。 2.それはgemリポジトリではなく、gemサーバー上にあるためです。 –

0

GemfileはRubyのコードとして実行されているので、明示的にグループ内で重複した宝石を排除するために、直接Bundler.settingsを参照することができます。

def without?(group) 
    Bundler.settings.without.include?(group) 
end 

group :development do 
    gem "appy_core", path: "../engines/core" unless without? :development 
end 

group :production do 
    gem "appy_core", '1.7.4.5' unless without? :production 
end 
関連する問題