Mat*_*age 53 ruby-on-rails backend rails-models
我目前正在开发一个Rails 3项目,该项目分为四个部分:
由于模型在三个关键组件之间共享,我希望它们远离一个主项目,但是每个部分都需要访问模型,但我不想重复代码并且在任何地方都有不同的版本.
目前我在gem中有模型代码,在每个项目的Gemfile中我使用以下行引用它们:
gem "my_models", :path => "../my_models/"
Run Code Online (Sandbox Code Playgroud)
但是,当我部署到我们的测试服务器以供我的同事评估系统时,我需要从外部存储库中提取模型,因此我将以上行替换为以下内容:
gem "my_models", :git => "git@private.repository.com:username/my_models.git"
Run Code Online (Sandbox Code Playgroud)
这在它自身运行良好,但它在"版本"方面非常笨重(即我每次希望将更改部署到测试服务器时都需要碰撞版本),切换线路以使用git而不是本地,并确保我正确地推送文件.
以前我使用的是共享的git子模块,但这很尴尬.
我宁愿不把所有内容都构建成一个大型项目,因为这些项目往往变得怪异且难以维护,如果可能的话我也想分开关注点,因此我对管理站点所做的任何更改都没有太多有可能影响其他组件 - 显然这些模型有可能引发问题,但这是我已经考虑和理解的风险.
当涉及到这样的事情时,那里的人们会提出什么建议呢?或者,我是否完全采用了错误的方式?
一些额外的背景:
这个应用程序是对现有网站的重写,遵循"将所有内容整合到一个项目中"的模式 - 不幸的是,这里有两个问题:
基本上我要分开两件事 - 前端(公共网站和API)和后端 - 我对软件开发的所有了解都告诉我,将所有这些结合在一起并不是一个理想的解决方案(过去的历史表明我认为,在确保前端性能方面,将这两者分开是一个很好的举措.
也许我需要从另一个角度来看这个 - 保持每个项目中的模型,而不是在项目之间共享它们,每个功能区域都有一个简化的功能子集(即后端需要知道谁创建了一个帖子,但是前端并不真正关心它,因此在阅读模型时省略了这种逻辑).
key*_*one 20
删除模型项目(将模型放入其他部分之一,我建议您考虑"更重要"),将所有项目放入单个存储库(单独的项目文件夹)并对模型/库/ apis /无论如何设置符号链接
您的代码高度耦合在一起,您经常需要同时更改几个项目(如更新模型和更新使用它们的API等)
单一repo-symlink设置的一个好处是你的提交将更少碎片,通常代表完整的功能实现 - 更容易跟踪错误,读取历史记录和维护代码库
同样在部署时,您不需要从许多存储库中读取 - 在那里只需少一点故障
发布过程也比这样的模型更简单,因为分支现在将包含所有项目的范围
有一些缺点,如符号链接在窗户上不能很好地工作,但对我来说,它的工作完美
我知道这不能解决您的特定问题。但我真的建议你将所有项目合并为一个。将所有这些部分包含在一个应用程序中是很常见的,并且没有任何开销。我认为这个问题没有不尴尬的解决方案。
| 归档时间: |
|
| 查看次数: |
11200 次 |
| 最近记录: |