Как я могу выделить основные функциональные возможности нескольких приложений Rails? - PullRequest
2 голосов
/ 15 апреля 2010

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

Я видел Rails Engines, но они кажутся слишком отстраненными, почти слишком абстрактными, чтобы на них можно было опираться. Мне может показаться, что они полезны для добавления одного компонента в существующее приложение, например, для добавления движка блога на существующий сайт электронной коммерции. Поскольку кажется, что движки в основном самодостаточны, трудно и неудобно переопределять их функциональность и представления при сохранении СУХОГО.

Я также подумал о том, чтобы абстрагировать код в гем, но это кажется немного странным. Делаю ли я, чтобы гем зависел от гемов Rails, и определяю модели и контроллеры внутри него, а затем делаю их подклассы в моих различных приложениях? Или я определяю много модулей внутри драгоценного камня, которые я включаю в различные места в моих различных приложениях? Как мне проверить гем, а затем протестировать набор настроек и переопределенную функциональность поверх него? Меня также волнует вопрос о том, как я буду разрабатывать гем и приложения Rails в тандеме. Могу ли я вложить в приложение git-репозиторий драгоценного камня и отказаться от него, чтобы мне не приходилось создавать новый гем каждую итерацию? Кроме того, есть ли частные хосты гемов / могу ли я установить свой собственный источник гемов?

Кроме того, есть какие-либо общие предложения для такого рода предприятий? Абстракция парадигм придерживаться? Требуется чтение? Комментарии мудрых, которые делали это раньше? Спасибо!

1 Ответ

1 голос
/ 15 апреля 2010

Никогда такого не делал, но я думаю, что плагин Rails был бы подходящим местом для этого:

http://guides.rubyonrails.org/plugins.html#models

http://guides.rubyonrails.org/plugins.html#controllers

http://guides.rubyonrails.org/plugins.html#helpers

И потом вы можете создать из него драгоценный камень:

http://guides.rubyonrails.org/plugins.html#plugingems

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