这听起来像是一个基本问题,但我无法在互联网上找到任何答案。
所以我有一个git ruby项目database_models。它是一颗宝石。我想要其他3个项目来使用它。我已经将这个项目依赖于这样的3个项目:
gem "database_models", :git => "path", :branch => master
现在,我希望这3个项目的develop
分支使用database_models的develop
分支,我希望这3个项目的master
分支使用{{1 database_models的分支,这样我的生产环境就可以稳定并独立于我的开发环境。
我可以看到4个这样的选项,我不喜欢其中任何一个:
将database_models部署到服务器,并使用路径更新这3个项目以引用database_models,而不是git
Git子模块
用户不同版本的database_models gem(1.1,1.2,1.3 ......)。我可能需要我自己的宝石服务器,对吗?
在Gemfile中写一些代码,根据" bundle install"的环境选择正确的分支。跑了。
答案 0 :(得分:1)
通常您使用Bundler with a local path。您的Gemfile使用git
或github
指向Git或Github仓库:
gem 'spree', github: 'spree/spree', branch: 'master'
请注意,包括分支。如果您愿意,可以让每个项目使用宝石的不同分支。如果您愿意,可以让每个项目使用宝石的不同分支。您还可以使用组根据环境部署不同版本的gem:
group :development, :test
gem 'spree', github: 'spree/spree', branch: 'bleedinedge'
end
group :staging, :production
gem 'spree', github: 'spree/spree', branch: 'master'
end
只要你继续推向Github,上面的工作就会很好。但是由于本地配置,您可以在命令行上运行以下命令:
bundle config local.database_modules ~/Projects/gems/spree
这会为您的~/.bundle/config
添加一行,因此当您在项目中运行bundle
时,它会从您的本地仓库中提取。
答案 1 :(得分:1)
用户不同版本的database_models gem(1.1,1.2,1.3 ...)。我可能需要我自己的宝石服务器,对吗?
我会这样做,只需让我的Gemfile通过标签选择正确的gem。这是一个例子:
git 'https://github.com/rails/rails.git', tag: 'v5.0.0'
因此,您可以在github上存储自定义gem时执行相同的操作(无需gem服务器)。
Here is how to use tags with Git
这应该为您提供所需的灵活性。