实际上很难制定问题,所以我只是解释一下情况。
我正在开发一个由多个子应用程序组成的应用程序。主应用程序只提供导航栏和一些基本功能,如用户配置和权限,而子应用程序提供实际功能。
现在这是一个Rails 2应用程序,子应用程序嵌入到框架中,它的设计并不是很好,而且设置起来相当复杂。 幸运的是,我们现在有了Engines,这将是这个应用程序的更好的解决方案。
到目前为止,所有内容都存在于subversion中并且可以立即更新,共享代码使用外部。在我们进行重组和重构时,我们想转向git。 过去几天我一直在搜索关于bundler,git子模块和git子树的网页,但我还没有找到一个很好的描述如何正确地管理一个包含多个Engines / Gems的大型项目,当你开发所有这些项目时同时。
特别是我希望能够:
我已经考虑过:
您是否有类似的设置,如何管理它以尽可能简单地进行更新和提交更改?您在哪里放置应用程序所依赖的Engine / Gem代码?
TL; DR 如何管理由多个引擎和宝石组成的大型铁路项目?
答案 0 :(得分:4)
我们公司有类似(但可能不那么复杂)的案例。我们做什么(就像现在一样),这对你也有用:
将您的Rails应用程序放在自己的git存储库中。每个宝石都有自己的存储库(虽然可以这样做,“一个gem =一个git存储库”将使你的生活更轻松。)
然后在你的Rails应用程序Gemfile中,你有几个选项
为了轻松更新所有宝石,我会创建一个小的.sh脚本(只是为了启动各种克隆或更新操作,以及捆绑安装,以便一切都干净),并使用主应用程序提交。我还会在团队中找到一个“标准文件夹组织”(即每个人都使用他们选择的基本文件夹,在Rails应用程序和每个gem的文件夹下),以使程序更容易。
我希望这可以帮助或获得你的想法(你的问题非常复杂和多方面,所以我不能100%确定这是你正在寻找的)。
答案 1 :(得分:1)
如何管理您的Gem依赖项?
Bundler通过Gemfile。
如何管理您的引擎?
Bundler通过Gemfile。
将您的引擎构建为Gems并在Gemfile中提供它们的git repo位置。如果您需要示例,请查看如何在Gemfile中包含https://github.com/radar/forem gem。
另外,这帮助我学习了Rails Engines,http://edgeguides.rubyonrails.org/engines.html。
你是来自Java Land吗?
Rails确实有学习曲线,但不像Java山崖那样下降。