有一个共同的图案:

有许多开发者在一个项目上工作和的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

我也有Gemfile.local和Gemfile.lock的在gitignore。我知道我不是“应该”,但我不认为警告(如你在你的问题中提到的)是值得的。

作为捆扎机1.0.10如2011年3月3日

的UPDATE
local_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

http://gembundler.com/groups.html

这不会帮助您的权利,但还有的是一个开放的功能要求对于捆扎机添加支持的Gemfile.local的年龄。据计划在1.x的系列某处,敬请关注。

如果您的主要问题是开发人员专用IRB的宝石,也有一对夫妇的解决方法的问题的评论

每个开发人员可以创建自己的分公司 - 捆扎机正常工作具有不同的Gemfile内容不同的分支。这对于开发者前缀分支名称与它们的缩写是一个好主意,以避免混淆或冲突。

(基本上是相同的想法,八月Lilleaas的评论:gitignore)

将默认/最小的Gemfile在SCM,然后让开发商改变它自己的系统,从来没有提交。让他们在他们的SVN客户端添加为无效变更(如果他们使用一个),其他的SCM应该有类似的东西。

这就是我们如何在我公司做到这一点 - 作品真的很好:)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top