Лучшие практики Rails для создания активируемых (или нет) функций? - PullRequest
2 голосов
/ 10 сентября 2011

Хорошо, давайте предположим, что у меня есть потрясающее приложение rails с некоторыми сообщениями, которые можно комментировать и голосовать.Это онлайн, и людям это нравится.

Теперь представьте, что клиент подходит и говорит мне: «Эй, это приложение выглядит хорошо! Могу ли я иметь то же самое, но с моим логотипом и голосами, также в комментариях?»

Итак, я клонирую приложение, вносю изменения, затем я доставляю настроенное приложение клиенту, а затем возвращаюсь к своему исходному приложению и продолжаю улучшать его.

Пару месяцев спустя приходит другой клиент, который также хочет получить то же приложение (теперь улучшенное), но с голосами и комментариями.

Конечно, я понимаю, что клонирование приложения не былоумная идея.

Что я хотел бы знать, как бы вы с самого начала сделали, чтобы сделать его простым, понятным и СУХИМЫМ для повторного использования функции, созданной для первого клиента в проекте второго?

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

Как бы вы этого достигли?

Я думаю, что ветки git могут быть хорошим способом для достижения этого, или, может быть, Rails Engines / Gems, или я не знаю, но я определенно не достаточно git или rails, чтобы ясно видеть картину дыр.

Спасибо!

1 Ответ

2 голосов
/ 14 сентября 2011

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

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

Другим вариантом могут быть проблемы. Например, вы можете экстраполировать систему комментирования на проблему и просто перенести ее на другие проекты с аналогичными потребностями.

В качестве альтернативы (и, возможно, мой наименее любимый вариант) будет поддерживать несколько репозиториев git с каждой функцией и использовать модули git для добавления их в ваш проект.

...