Rails引擎是否适合管理应用程序的多个版本?

时间:2009-03-09 17:43:17

标签: ruby-on-rails

我有一个具有核心功能(布局,用户,消息等)的rails应用程序和3个不同的版本,它们在核心集之上添加了自己独特的功能。它们中的每一个目前都在不同的目录中,并且目前单独部署。

当我对核心功能进行更改时,我必须手动将它们复制到每个应用程序中并且非常混乱。

我想让3个文件夹成为核心应用程序,这样我就可以通过git获取更改,并通过plugins文件夹中的引擎获得独特的功能。通过这种方式,我可以保留一个版本的核心功能,并将独特的功能分开。

这是解决这个问题的可行方法吗?

我以前从未使用过Engines,只是在Rails 2.3中找到它们。

1 个答案:

答案 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

显然,这比复制文件容易得多。我希望这适合你。