2010-11-19 3 views
1

Каков наилучший способ организовать несколько, слегка разнообразных воплощений одного приложения Rails?Несколько воплощений одного приложения Rails

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

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

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

Причина, по которой я пишу этот пост, потому что я уверен, что эта проблема должна быть решена. Есть ли существующий «скины» или что-то, что я могу использовать для этого? В противном случае любые замечания по моему планируемому подходу были бы очень признательны! Я использую Rails 3.

ответ

1

Почему бы просто не поддерживать отдельные ветви в вашей системе контроля версий?

1

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

Вы изложили CSS и изображения как свои основные проблемы, поэтому я буду придерживаться их, однако нам также пришлось использовать идеи для исправления макетов, авторизации и javascript среди других проблем и ресурсов.

Для простоты я назову кожу, в нашем случае это отдельный продукт.

В нашем приложении есть плагин, который устанавливает некоторые переменные среды на основе входящего домена. Затем, основываясь на этих переменных, наше приложение Rails будет размещать различные макеты и частичные по мере необходимости. Эти макеты затем ссылаются на соответствующие JS и изображения, которые хранятся в местах, которые имеют смысл для дизайнеров и сторонних разработчиков. Например, client.js может хранить обычные операции клиента, а затем в подкаталоге может быть client.js для скина, и он расширяет основной файл customer.js (для этого мы используем Dojo).

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

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

Для CSS мы используем SASS, поэтому много раз вы можете использовать mixins для цветов и изображений. Мы делаем это, имея корневой файл SASS с информацией о макете, в которой используются переменные для цветов и изображений. Затем мы потребуем, чтобы эти цветные файлы и файлы изображений в корневой SASS по мере необходимости.

Ответ может быть лучше, если вы дадите некоторую информацию о том, как вы определяете между этими двумя скинами. Насколько я знаю, теперь есть плагины домена, которые могут помочь вам определить, на каком сайте пользователь пытается получить доступ. Что касается того, как организовать ваше приложение для отображения правильного CSS, изображений, JS и т. Д., Надеюсь, то, что я изложил, помогает немного.

Смежные вопросы