gpt4 book ai didi

ruby-on-rails - 从同一个 Rails 代码库运行多个站点?

转载 作者:行者123 更新时间:2023-12-03 11:53:19 24 4
gpt4 key购买 nike

我有一个客户想要将他们在一个利基市场取得成功的 Rails 应用程序应用到另一个类似的利基市场。这个应用程序的新实例将开始非常相似:所有相同的功能、不同的 Logo 和颜色。但是,如果新站点成功,它将不可避免地需要不应该应用于原始站点的大量自定义。同时,如果修复了错误并对一个应用程序进行了改进,那么两个应用程序应该能够共享这些改进。

任何人都可以提出解决此问题的策略或资源吗?如何使适用于这两个应用程序的更改花费更长的时间来测试和实现?

是的,我知道答案涉及 SCM、插件、gem 和 Rails 引擎。这些工具将会并且正在被使用。但我想知道何时以及如何使用这些工具来解决这个问题。

也欢迎链接。

这个问题与以下问题不同:

Multiple websites running on same codebase?
在我的问题中,我没有运行具有不同设置的完全相同的应用程序。

How do you sync changes between multiple codebases?我问了一个类似的问题,但我特别问的是 Rails 应用程序。

最佳答案

我们目前使用的设置与您所描述的非常相似。

我们开始为客户开发一个有点大的 Rails 应用程序(销售、库存管理、产品目录等)。完成后,出现了几个几乎相同功能的新请求。

然而,原始应用程序必须继续维护,添加新功能,纠正错误等等。

扩展的需要保持大部分功能,但会改变外观和外观。

我们所做的是遵循一系列步骤:

  • 首先,我们开始清理代码,将硬代码引用拉到表中,减少和优化查询,查找丢失的索引以及改进 ActiveRecord 使用的方法
  • 在有些满意之后,我们开始开发缺失的测试。我不能过分强调它为什么有用,因为我们将为多个应用程序维护相同的代码库,并且需要尽可能保护核心功能免受新更改的影响。
  • 这也是一个神奇的词:核心功能。我们开始选择可以重用的基本功能,并提取所有通用代码。这为我们提供了 Controller 、模型和 View 的组合,我们开始将其更改为模块、插件和 gem。
    什么去哪里?很大程度上取决于您的代码。根据经验,不涉及领域语言的功能会使用插件(如果不太依赖 Rails,则使用 gems)
  • 这种方法将我们引向了几个插件、gem,然后我们将它们组合在一起重新组装了原始项目,然后它进入了它自己的 GIT 存储库。这样,我们就有了一个主"template"存储库,它为每个组件粘合了所有组件和其他几个 GIT 存储库。
  • 最后,我们开发了一个简单的主题系统(基本上加载/stylesheets/themes/:theme_name/并从数据库中获取主题名称)。由于它是一个 Intranet 项目,我们几乎可以通过适当的 CSS 样式来做任何事情。我猜想与 IE 一起工作你需要一种更复杂的方法。
  • 然后,我们只是使用该主存储库在其之上开发新功能。

  • 现在,我们如何处理核心基础的变化。我们从模板存储库开始。我们修复或定义应该修复或更改的位置,然后在此处或相应的 gem/plugin 上进行更改。正确测试后,我们将其部署到我们的 GitHub 帐户。

    最后,我们从该模板存储库中合并/ rebase 其他项目,获取新的更新。

    听起来有点复杂,但这只是为了设置。当前的工作流程非常简单易行,具有与多个开发人员合作而不会出现更大问题的给定优势。

    关于ruby-on-rails - 从同一个 Rails 代码库运行多个站点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1772408/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com