实际上很难提出这个问题,所以我只是解释一下情况。
我正在开发一个由多个子应用程序组成的应用程序。主应用程序仅提供导航栏和一些基本功能,例如用户和权限配置,而子应用程序提供实际功能。
现在这是一个 Rails 2 应用程序,子应用程序嵌入到框架中,它的设计不是很好,设置也很复杂。幸运的是,我们现在有了引擎,这将是这个应用程序的更明智的解决方案。
到目前为止,一切都存在于颠覆中,并且可以立即更新,共享代码使用外部代码。我们想在重组和重构时迁移到 git。过去几天我一直在网上搜索有关捆绑程序、git 子模块和 git 子树的信息,但我没有找到一个很好的描述,当您在所有这些上进行开发时如何正确管理由多个引擎/宝石组成的大型项目同时。
我特别希望能够:
- 使用 Bundler 管理依赖项
- 不要将我们自己的 Gems 和 Engines 安装到全局 gem 路径中,而是相对于主应用程序,作为 git 存储库
- 将我们自己的 Gems 和 Engines 设置为 git 存储库(可能使用 Bundler 的本地路径覆盖)
- 一种获取所有依赖项(捆绑安装)的简单方法,它可以提取我们自己的 Gems 和 Engines 的最新版本,如果这不可能,那么一个命令可以 git pull 所有自己的 Gems 和 Engines(可能是一个 rake 任务?)
- 使新开发人员可以轻松快速地设置整个开发环境(git 克隆应用程序,在本地捆绑安装依赖项,包括所有自己的 Gem 和引擎)
- 使用 Capistrano 轻松部署
我已经想到的:
- 将所有内容都包含在一个存储库中,这似乎违背了对我来说单独的 Gems/Engines 的目的,而且我认为它不允许我们通过 Bundler 管理主应用程序对引擎的依赖关系
- 使用子模块,我读了太多关于为什么它不好的帖子,并且对于我们的开发人员数量来说,有人提交一个子模块指针指向只存在于他的本地仓库中的提交只是时间问题
- git subtree 实用程序,对我来说似乎很复杂
那么你们中是否有人有类似的设置,你如何管理它以使更新和提交更改尽可能容易?您将应用程序所依赖的引擎/宝石代码放在哪里?
TL;DR如何管理由多个引擎和宝石组成的大型轨道项目?