我有一个具有核心功能(布局,用户,消息等)的rails应用程序和3个不同的版本,它们在核心集之上添加了自己独特的功能。它们中的每一个目前都在不同的目录中,并且目前单独部署。
当我对核心功能进行更改时,我必须手动将它们复制到每个应用程序中并且非常混乱。
我想让3个文件夹成为核心应用程序,这样我就可以通过git获取更改,并通过plugins文件夹中的引擎获得独特的功能。通过这种方式,我可以保留一个版本的核心功能,并将独特的功能分开。
这是解决这个问题的可行方法吗?
我以前从未使用过Engines,只是在Rails 2.3中找到它们。
答案 0 :(得分:3)
我不知道rails引擎是否是解决方案,但是让我告诉你我们如何在我们的一个项目中解决这个问题。
我们有一个核心项目,以及两个几乎使用大部分相同数据的项目(主要是rails模型)。以下是我们设置的方法:
3 git repos:
- 核心项目
- 子项目1
- 子项目2
核心项目是一个完全正常的git repo,但在子项目中,核心项目是一个git子模块。然后,通过git添加和跟踪符号链接。例如:
/subproject $: git submodule add git@git.repo:core.git core /subproject $: cd app /subproject/app $: ln -s ../core/models models
现在,子项目/ app / models从核心项目中拉出来。你可以为任意数量的文件做到这一点。
从核心仓库更新:
/ subproject $:git submodule update&& git commit
显然,这比复制文件容易得多。我希望这适合你。