题
有一个共同的图案:
有许多开发者在一个项目上工作和的Gemfile(.lock)经由SCM共享。但是,如果一些开发商想用不同的工具进行测试和开发?怎么办呢?
但问题是,当你把条件节到您的Gemfile,也Gemfile.lock的将是每个开发者不同,为此你会每次都让你冲突承诺SCM。
有一些简单的,广泛认同的解决方案?
解决方案 6
我假定install_if
方法(最近添加)解决了这个问题:
install_if -> { `whoami`.strip == 'jakub' } do
gem "pry-rails"
end
其他提示
我喜欢这个在我的Gemfile:
local_gemfile = File.dirname(__FILE__) + "/Gemfile.local"
if File.file?(local_gemfile)
require local_gemfile
end
我也有Gemfile.local和Gemfile.lock的在gitignore。我知道我不是“应该”,但我不认为警告(如你在你的问题中提到的)是值得的。
作为捆扎机1.0.10如2011年3月3日强>
的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中的应用或它的测试。只要有每个开发者创建一个宝石(我假设你正在使用RVM,如果你没有,你应该)的应用程序并安装他们需要什么那里,然后只需添加什么应用程序需要运行到Gemfile中。
您可以使用捆扎机的without
标志排除分组。
如果你有以下的Gemfile
group :jakubs_testing_tools do
gem "rspec"
gem "faker"
end
您可以用bundle install
排除它们
$ bundle install --without jakubs_testing_tools
每个开发人员可以创建自己的分公司 - 捆扎机正常工作具有不同的Gemfile内容不同的分支。这对于开发者前缀分支名称与它们的缩写是一个好主意,以避免混淆或冲突。
(基本上是相同的想法,八月Lilleaas的评论:gitignore)的
将默认/最小的Gemfile在SCM,然后让开发商改变它自己的系统,从来没有提交。让他们在他们的SVN客户端添加为无效变更(如果他们使用一个),其他的SCM应该有类似的东西。
这就是我们如何在我公司做到这一点 - 作品真的很好:)