Приложение Rails нужно разделить - PullRequest
0 голосов
/ 31 августа 2018

У меня есть приложение rails, и у меня есть требование сделать его версию, которая потребует других представлений, а также некоторых изменений логики ядра. Приложение все равно будет на 80% + таким же. Я думал, что нам нужно будет разделить это приложение, возможно, на три приложения; основная логика и два варианта на ее основе.

Какие-нибудь предложения относительно лучшего пути? Думал создать драгоценный камень для бэкэнда и включить его в другие приложения.

Ответы [ 2 ]

0 голосов
/ 01 сентября 2018

Это зависит от того, насколько велико приложение и какова его цель. Как и в случае с API, вы можете создавать версии своих контроллеров и представлений, размещая их в именах маршрутов и классов, и вы можете наследовать от ваших классов V1, чтобы создавать свои классы V2, переопределяя единственные вещи, которые нужно изменить. Это будет работать особенно хорошо, если вам нужно будет перейти либо к старой версии, либо к новой версии, все в одном приложении. Так что вместо

/ приложение / контроллеры / user_controller.rb

class UserController < ApplicationController
  def show
    ...
  end

  def create
    ...
  end
end

Вы бы получили:

/ приложение / контроллеры / v1 / user_controller.rb

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

  def create
    ...
  end
end

/ приложение / контроллеры / 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
0 голосов
/ 31 августа 2018

Я уже прошел через это в одном из моих проектов. Требования должны были иметь большой общий набор функций, функциональности и базы кода, но при этом иметь возможность настраивать и добавлять новые функции для конкретных клиентов.

Мы пошли в направлении создания основного движка рельсов, который можно было бы установить для различных клиентских приложений, а затем расширили / настроили его в соответствии с потребностями клиента.

Рекомендую посмотреть, как работают рельсовые двигатели: https://guides.rubyonrails.org/engines.html

Я могу заверить вас, что это направление было беспроблемным, простым, организованным, масштабируемым (+70 различных клиентов / репо с одним и тем же ядром), и мы не сожалеем, что сделали это таким образом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...