如何管理共享代码和配置的多个Rails应用程序和服务?
我有四个Rails应用程序(还有更多)。 他们分享:
- 样式表
- JavaScript的
- 第三方gem
- 一些相同的ActiveRecord模型
- 我们自己的ruby图书馆
- 配置/环境变量
我还有一堆与上面的Rails应用程序交互的rabbitmq服务。
我正在试图找出如何理智地控制所有这些东西。 现在,我在一个巨大的git存储库中拥有所有内容,结构如下:
/网站/ rails1 /网站/ rails2 /网站/ Rails3中 /服务/服务1 /服务/服务2 /服务/服务2 / lib目录/ our_code / lib目录/ common_js / lib目录/ common_css /配置/ common_configuration_files
这是一种理智的方式吗?
如果我要将所有内容都分解为他们自己的git项目,那么每次更新共享gem / library / css文件(使用gems / bundler或其他)时,似乎很难单独更新每个项目。
在一个项目中拥有所有内容的不幸之处在于我无法在Heroku上轻松放置一个应用程序或服务。
可以在这里使用git子树合并帮助吗? 也许每个站点/服务都是自己的分支?
每个项目一个回购。 共享的东西可以自己的回购。 假设文件结构是常量,您可以使用软文件链接来包含这些目录。 Git将尊重这些软文件链接并检查它们,但不会在项目的repo中包含引用的目录。
拥有一个大型仓库会使您的仓库日志难以遵循,因为您将拥有与项目的语义划分无关的分支(即,进入Rails应用程序)。 当然,如果你想弄清楚特定文件或目录发生了什么,那么所有信息都在那里 ,但你的一般git log --name-status
将包含所有项目的信息,这些信息不太理想,而且有点难以过滤掉(没有在git上创建ad-hoc系统)。