Я организую мультитенантное приложение с одной кодовой базой/приложением, используя поддомены для обнаружения арендатора, а затем запускаю SET SCHEMA на postgres, чтобы делать забавные вещи.
Моя проблема в том, что некоторым клиентам потребуются различные уровни настройки основной кодовой базы. Не тонну, но, конечно, достаточно для того, чтобы я не хотел начинать взламывать основные модели и контроллеры, добавляя кучу операторов if.
Переопределение представлений достаточно просто с путями загрузки представлений... но мой вопрос: как я могу обеспечить хорошую структуру для переопределения или добавления функциональности к базовым контроллерам, моделям и помощникам, чтобы настроить вещи для каждого арендатора по мере необходимости? В идеале он должен быть довольно плавным и не нарушать основной код, а также должен обеспечивать достойный механизм для организации пользовательского кода.
Я исследовал несколько вариантов, включая использование include/extends (mixins). Проблема в том, что в продакшене методы остаются в объектах (понятно). Я пробовал использовать жемчужину миксологии, чтобы обойти это, но она работает не совсем так, как я планировал, и немного более инвазивна, чем мне хотелось бы, я также не понимаю, как связать ее с моделями ( в контроллерах я только что попробовал смешать/размешать через фильтры до/после).
Если у кого-то есть какие-либо идеи о том, как лучше всего подойти/решить эту проблему, я был бы очень признателен за ваши отзывы. FWIW это Rails3