0

今年我们在 Rails 3 中开发了一个应用程序(计划升级到 rails 4)。我们已经把它卖给了 2 个客户,现在问题将开始。

在核心中,除了样式表、一些 html 和一些类之外,所有应用程序都或多或少相同。

现在我正在寻找一种方法来管理这些应用程序,例如当我们有 100 个客户运行该产品时。

因此提出以下问题:

  • 您如何管理所有客户的更新?
  • 您如何管理所有客户的修复(对于 2 个客户,我现在只是挑选,但对于 100 个客户,您不能这样做,有些客户的代码是不同的,所以像批量挑选这样的东西并不总是有效)
  • 你如何管理新客户?
  • 是否可以使用样式表文件将代码与drupal 中的样式分开?
  • 任何更多的问题都可以随时添加。

亲切的问候。

EDIT1:我们提供的是一个有核心的站点,但每个客户都可以更改站点的任何内容,从核心到设计。

EDIT2: RAILS 代码:我们有一个 Rails 管理界面,假设我们通过设置使所有代码可定制:

If Settings.value_shown == true
 User.do_something
else
 User.do_something_else
end

CSS / SASS 代码:假设我们制作了 1 个干净的 CSS,并且我们为每个客户创建了一个覆盖所有标准代码的覆盖类。

EDIT3:假设 50 个客户中的每一个都有 3 个分支,一个 DEV / QUALITY / PRODUCTION 系统。我们为所有客户开发了一个修复程序,您如何将此修复程序部署到所有客户?

4

3 回答 3

2

将不同客户的代码放到不同的分支中是第一个问题。您应该真正沿其他轴自定义每个客户的代码。例如,您可以为每个客户创建一个单独的目录,或者某种插件架构,其中客户的特殊代码位于单独的项目中。或者您将所有代码都放在一件大事中,并添加一些针对每个客户的配置。

但是针对不同客户的 $N 个不同分支意味着 $N 个代码副本,您必须手动修补它们。不要那样做。

谷歌的一个很好的关键字是“软件产品线”,因为这就是你想要做的:-)

于 2014-08-07T15:04:13.497 回答
1

我觉得你在硬编码差异?这不会扩展,您需要为所有客户部署相同的代码库,否则您将面临巨大的头痛。

将所有可定制的组件构建为客户端设置并将它们存储在数据库中,这样您的所有客户端都可以从同一个代码库中运行。如果是他们需要更改的布局和组件,那么请考虑使用 Shopify 的Liquid或类似工具来构建一些东西。我没用过,但听说很好用。

于 2014-08-07T14:03:32.523 回答
0

可能有很多方法可以解决这个问题,但这里是我的想法:

  1. 创建基于客户端的 CSS 并根据登录的客户端加载适当的 CSS。
  2. 您可以为每个客户使用完全不同的标记。在您的 app/views 目录下,为单个客户端创建整个“views”文件夹结构。例如

如果您有以下文件夹结构

app
  views
    users
    sessions
    dashboard
    etc. etc.

您可以升级到以下内容:

app
  views
    clientA
      users
      sessions
      dashboard

    clientB
      users
      sessions
      dashboard

并根据要求为单个客户生成标记。并呈现适当的客户“视图”文件夹,使用:

ApplicationController
  before_filter :load_views

  def load_views
    client = current_user
    #assuming that client.name is some unique identifier which points to folder name in app/views directory
    prepend_view_path "app/views/#{client.name}/"
  end
end

我希望这有帮助。

于 2014-08-07T14:10:09.480 回答