У меня есть клиент, которому нужен тот же пользовательский CMS, разработанный приблизительно для 5 приложений. Все приложения будут иметь "подобный", но другой стиль, и я действительно хотел бы иметь 1 приложение направляющих, обрабатывают это и просто изменяют расположение/представления по мере необходимости. Существует ли драгоценный камень/плагин или прецедент для этого?
Предложение Дуга будет работать, если различия между сайтами касаются чисто стиля и статического содержания - например, если вы в основном просто «снимаете скин». Но я был бы осторожен, следуя этому подходу, если различия будут более серьезными. Вы можете очень легко столкнуться с кошмаром обслуживания, когда вся ваша бизнес-логика будет окружена операторами case и большим количеством специального кода случая, распространенного по вашему приложению. И вы действительно почувствуете боль, если когда-нибудь захотите разделить сайты на разные серверы или внести существенные функциональные изменения в некоторые сайты, но не в другие.
Если вы ожидаете каких-либо существенных различий между сайтами, вы можете рассмотреть возможность их разработки как отдельных проектов Rails с общими компонентами. Поместите код, которым они поделятся, в драгоценные камни или плагины и зарезервируйте отдельные проекты для атрибутов, которые они не разделяют. За небольшое увеличение накладных расходов вы купите себе гораздо больше гибкости в будущем.
Вы можете начать с плагина DHH's Account Location в качестве начала, но измените его, чтобы использовать имя домена верхнего уровня (TLD) вместо поддомена. Это очень простая библиотека, но она выполняет свою работу. Просто убедитесь, что все ваши находки в приложении выполняются с помощью учетной записи
, связанной с доменным именем.
Несколько лет назад я построил что-то специально для этой цели. Я давно не касался этого, но на github есть некоторая сетевая активность. Плагин Rails Multisite