通过Rails管理大型应用程序

时间:2014-08-07 13:48:53

标签: css ruby-on-rails git software-product-lines

我们今年在Rails 3(计划升级到rails 4)中开发了一款应用程序。 我们已将其出售给2位客户,现在问题将开始。

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

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

因此有以下问题:

  • 如何管理所有客户的更新?
  • 如何为所有客户管理修复程序(目前我只是挑选2个客户,但对于100个客户,你不能这样做,有些客户代码是不同的,所以像质量樱桃选择这样的东西并不总是有效)
  • 您如何管理新客户?
  • 是否可以使用样式表文件将代码与drupal中的样式分开?
  • 可以随时添加任何疑虑。

亲切的问候。

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

EDIT2: RAILS CODE:我们有一个Rails管理界面,假设我们通过设置自定义所有代码:

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

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

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

3 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分:1)

我得到的印象是你难以解决这些差异?这不会扩展,您需要为所有客户部署相同的代码库,否则您将为自己设置一个巨大的头痛。

将所有可自定义组件构建为客户端设置并将其存储在数据库中,以便所有客户端都可以从相同的代码库运行。如果它们需要能够更改布局和组件,那么请使用Shopify的Liquid或类似内容来查看构建内容。我没有用它,但我听说它很棒。

答案 2 :(得分:0)

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

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

    app
      views
        users
        sessions
        dashboard
        etc. etc.
    

    您可以升级到以下内容:

    app
      views
        clientA
          users
          sessions
          dashboard
    
        clientB
          users
          sessions
          dashboard
    

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

    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
    

    我希望这会有所帮助。