有一个常见的模式:
有许多开发人员在一个项目上工作,Gemfile(.lock)是通过供应链管理共享的。但是,如果一些开发人员想要使用不同的工具进行测试和开发呢?该怎么做呢?
问题是,当您将条件部分放到Gemfile中时,每个开发人员的Gemfile.lock也会不同,因此每次您提交SCM时都会发生冲突。
有什么简单的、广为认可的解决方案吗?
发布于 2017-03-24 00:49:16
我认为install_if方法(最近添加的)解决了这个问题:
install_if -> { `whoami`.strip == 'jakub' } do
gem "pry-rails"
end请参阅http://bundler.io/v1.14/man/gemfile.5.html#INSTALL_IF
发布于 2010-11-22 18:25:12
我喜欢在我的Gemfile中包含以下内容:
local_gemfile = File.dirname(__FILE__) + "/Gemfile.local"
if File.file?(local_gemfile)
require local_gemfile
end我在gitignore也有Gemfile.local和Gemfile.lock。我知道我不应该这样做,但我不认为这些警告(比如你在问题中提到的)是值得的。
捆绑包1.0.10的更新,截止日期为2011年3月3日
local_gemfile = File.dirname(__FILE__) + "/Gemfile.local.rb"
if File.file?(local_gemfile)
self.instance_eval(Bundler.read_file(local_gemfile))
end我不得不在Rails3和Bundler 1.0.10中使用它。
发布于 2010-11-22 18:19:58
如果你检入依赖于gem的东西,gem应该在这个gem文件中。如果存储库中的代码不依赖于gem,那么就没有必要将它放在gemfile中。因此,除非您的开发人员不签入他们的测试(这会很奇怪),否则如果您想要运行整个测试套件,您将需要所有测试的依赖项。
如果gem不是运行应用程序或其测试所必需的,那么gem就不需要在gem文件中。只需让每个开发人员为应用程序创建一个gemset (我假设您正在使用RVM,如果您不使用RVM,则应该使用),并在那里安装他们需要的任何东西,然后只需将应用程序运行所需的内容添加到gemfile中。
https://stackoverflow.com/questions/4244182
复制相似问题