TL; TR
我们有两个项目(minitest项目和一个页面对象项目)。 Minitest项目使用页面对象项目。当Jenkins运行测试时,我们使用远程git路径来访问页面对象项目。当我们在本地运行它时,我们更改minitest项目中的gem文件以使用本地路径\或本地git repo。这导致我们需要不断更改gem文件。我们不希望这样做。我们如何设置它以便我们不需要继续更改gem文件?
长版
我有两个紧密耦合的Ruby项目。这两个项目都用于支持Capybara的测试。一个项目包含Minitest测试。另一个项目包含页面对象。 minitest项目使用页面对象项目。页面对象项目作为gem发布,以便其他团队可以使用它。我们经常需要同时编辑这两个项目。
我正在使用Bundler来管理宝石。这些项目曾经是两个不同的git回购。
测试在Jenkins中运行,当我们处理它们时,我们在本地运行它们。当测试在Jenkins中运行时,minitest项目可以将页面对象项目作为已发布的gem或远程git repo引用。
我们遇到的问题是我们需要更改minitest项目的gem文件。我们会将其从指向远程git repo更改为签出(本地)路径。或者我们会指向当地的git repo。在这种情况下,我们仍然需要使用本地分支名称更新minitest项目的gem文件。我们需要使用任一种方法编辑gem文件,然后我们必须记住在签入和合并之前将其更改回来。
然后我们将两个项目都移到了一个仓库中。现在minitest项目中的gem文件仅使用相对路径,例如path => ...
。这意味着我们不需要在minitest项目中不断更新gem文件。但是,现在当我们运行bundle install
或bundle update
时,只使用minitest项目中的gem文件(至少这是我假设发生的事情)。
如何在我的开发机器上使用不同的gem路径\ git repo到Jenkins中使用的内容,而不连续更改gem文件?
我想知道在这种情况下我应该采用什么方法?可以避免更改minitest项目的gem文件吗?
答案 0 :(得分:0)
考虑使用bundler
的群组(Gemfile
):
group :project1 do
gem 'rspec'
end
group :project2 do
gem 'minitest'
end
然后在application.rb
中指定要使用的组,例如
Bundler.require(:project1) # or :project2 depending on the project
此处有更多信息:http://bundler.io/groups.html