如何管理共享代码和配置的多个Rails应用程序和服务?

时间:2011-07-19 19:55:18

标签: ruby-on-rails ruby configuration service

我有四个Rails应用程序(还有更多)。他们分享:

  • 样式表
  • Javascript角
  • 第三方宝石
  • 一些相同的ActiveRecord模型
  • 我们自己的红宝石图书馆
  • 配置/环境变量

我还有一堆与上述Rails应用程序交互的rabbitmq服务。

我正在试图找出如何理智地控制所有这些东西。现在,我将所有东西放在一个巨大的git存储库中,结构如下:

/sites/rails1
/sites/rails2
/sites/rails3
/services/service1
/services/service2
/services/service2
/lib/our_code
/lib/common_js
/lib/common_css
/config/common_configuration_files

这是一种理智的方式吗?

如果我要将所有内容都分解为他们自己的git项目,那么每次更新共享gem / library / css文件(使用gems / bundler或其他任何东西)时,似乎很难单独更新每个项目。

在一个项目中拥有所有内容的不幸之处在于我无法在Heroku上轻松放置一个应用程序或服务。

可以在这里使用git子树合并帮助吗?也许每个站点/服务都是自己的分支?

1 个答案:

答案 0 :(得分:2)

每个项目一个回购。共享的东西可以自己的回购。假设文件结构是常量,您可以使用软文件链接来包含这些目录。 Git会尊重这些软文件链接并检查它们,但不会在项目的repo中包含引用的目录。

拥有一个大型仓库会使您的仓库记录难以遵循,因为您将拥有与项目的语义划分无关的分支(即,进入Rails应用程序)。当然,如果你想弄清楚特定文件或目录的发生情况,那么所有的信息都是那里,但你的一般git log --name-status将包含所有项目的信息, - 这是可取的,也很难过滤掉(没有在git上创建一个特殊的系统)。