Rails应用程序需要拆分

问题描述 投票:2回答:2

我有一个现有的rails应用程序,并且需要制作一个需要不同视图和一些核心逻辑更改的版本。申请仍然是80%+相同。我在想我们需要将这个应用程序拆分出来,也许需要分成三个应用程序;核心逻辑和基于它的两个变体。

有关最佳路径的任何建议吗?正在考虑为后端创建一个gem并将其包含在其他应用程序中。

ruby-on-rails
2个回答
8
投票

在我的一个项目中,我曾经经历过这次。要求是拥有一组很常见的功能和代码库,但能够为特定客户定制和添加新功能。

我们进入了一个可以安装到不同客户端应用程序的核心rails引擎的方向,然后我们根据客户需求扩展/定制它。

我建议你看看rails引擎是如何工作的:https://guides.rubyonrails.org/engines.html

我可以向您保证,这个方向无忧无虑,简单,有条理,可扩展(+70个不同的客户端/ repos使用相同的核心引擎),我们不会后悔这样做。


1
投票

这取决于应用程序的大小和目的。就像API一样,您可以通过在路由和类中命名它们来对控制器和视图进行版本控制,并且可以继承V1类来创建V2类,从而覆盖需要更改的唯一内容。如果您需要转到旧版本或新版本,这些都在同一个应用程序中,这将特别有效。而不是

/app/controllers/user_controller.rb

class UserController < ApplicationController
  def show
    ...
  end

  def create
    ...
  end
end

你有:

/app/controllers/v1/user_controller.rb

class V1::UserController < ApplicationController
  def show
    ...
  end

  def create
    ...
  end
end

/app/controllers/v2/user_controller.rb

class V2::UserController < V1::UserController
  def create
    # show didn't change between versions, so don't override it
    # only change create here so that its specific to our v2 behavior
    ...
  end
end
© www.soinside.com 2019 - 2024. All rights reserved.