質問
一般的なパターンがあります:
が一つのプロジェクトに取り組んで多くの開発者があり、Gemfile(の.lock)がSCMを介して共有されます。しかし、どのような場合、一部の開発者は、テストと開発のためのさまざまなツールを使用したいですか?それを行うには?
問題は、あなたのGemfileに条件付きセクションを置くとき、またGemfile.lockは、各開発者のために、あなたが競合あなたがSCMにコミットするたびに買ってあげるそのための異なるものになるということです。
いくつかの簡単ながあり、広く認めソリューション?
解決 6
私はinstall_if
方法を考えるには、(最近追加された)問題を解決します:
install_if -> { `whoami`.strip == 'jakub' } do
gem "pry-rails"
end
を参照してください。 http://bundler.io/v1.14/男性/ gemfile.5.html#INSTALL_IFする
他のヒント
私はGemfileでこれを持っているのが好きます:
local_gemfile = File.dirname(__FILE__) + "/Gemfile.local"
if File.file?(local_gemfile)
require local_gemfile
end
私はまたgitignoreにGemfile.localとGemfile.lockを持っています。私は、「になって」私はないんだけど、私は、(あなたがあなたの質問に言及したものなど)の注意事項は価値があるとは思わない。
2011年3月3日の
のようバンドラー1.0.10用の UPDATElocal_gemfile = File.dirname(__FILE__) + "/Gemfile.local.rb"
if File.file?(local_gemfile)
self.instance_eval(Bundler.read_file(local_gemfile))
end
私はRailsの3とバンドラー1.0.10でこれを使用する必要がありました。
あなたは宝石がgemfileでなければならないことを宝石に依存し、何かに確認してください。リポジトリ内のコードが宝石に依存していない場合は、gemfileでそれを持っている必要はありません。だから、あなたの開発しない限り、あなたはとにかく全体のテストスイートを実行したい場合は、すべてのテストの依存関係が必要になります(奇妙なことと思われる)そのテストでチェックしません。
宝石は宝石がgemfileである必要はありませんアプリやそのテストを実行するために必要でない場合。ただ、各開発者は、彼らが必要とし、そしてちょうどgemfileに実行するためにどのようなアプリケーションのニーズ追加アプリのために(あなたがいないあなたがすべき行う場合、私は、あなたがRVMを使用していると仮定)gemsetを作成して、何をインストールしています。
あなたはグループを除外するためにバンドラーのwithout
フラグを使用することができます。
あなたは以下を持っている場合はGemfile
group :jakubs_testing_tools do
gem "rspec"
gem "faker"
end
あなたはbundle install
でそれらを除外することができます。
$ bundle install --without jakubs_testing_tools
これは、今、あなたを助けにはなりませんが、オープン機能要求するがあったですバンドラーのための年齢のためGemfile.localのサポートを追加します。それはので、しばらくお待ち、1.xのシリーズのどこかに予定されています。
あなたの主な問題は、開発者固有のIRBの宝石である場合は、回避策のカップルが問題のでありますコメントはします。
各開発者は独自のブランチを作成することができます - バンドラーは異なるGemfileの内容を有する異なる支店で罰金を動作します。これは、混乱や衝突を避けるために、自分のイニシャルとプレフィックスブランチ名に開発者のための良いアイデアです。
(8月Lilleaasさんのコメントのように、基本的には同じ考え方:gitignore)の
SCMでデフォルト/最小限のGemfileを入れて、その後、開発者がシステム上でそれを変更してコミットしたことがありません。彼らは(彼らはいずれかを使用している場合)、他のSCMは、類似した何かを持っている必要があります彼らのSVNクライアントに自分の非アクティブチェンジに追加しています。
これは私達が私の会社でこれを行う方法です - 本当によく働く:)