2011-02-02 2 views
1

мне интересно, что вы думаете о нескольких методов есть для достижения этой цели:просмотров Обмен между Rails 3 приложения

  1. Используйте символические ссылки для общих файлов

  2. Создать драгоценный камень/плагин, который предоставляет общие файлы и код

  3. Создать веб-сервис, который вытягивает Views/партиалы от требуемого приложения и сохраняет его в кэше

Моя цель - уменьшить сложность в большом приложении. Предположим, я хочу создать онлайн-сообщество, и я хочу, чтобы одно приложение обрабатывало форумы, другое - для обработки пользовательских галерей и т. Д., И центральное, которое управляет пользователями и предоставляет общие представления другим приложениям.

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

Например, у макета есть главное меню с элементом для каждого приложения, и каждый элемент имеет подменю размера, поэтому я не могу просто иметь простой список ярлыков и пар URL.

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

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

Спасибо за ваш вклад.

ответ

1

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

При этом, если вы настроены на использование трех приложений, я бы рекомендовал не использовать API и API. API отлично подходят для передачи данных (json, xml ...) взад и вперед, но они не так хорошо подходят для представлений. Моя рекомендация заключалась бы в создании плагина общих представлений, которые могут быть сохранены в отдельном репозитории git и просто использованы в каждом из ваших приложений. Таким образом, общий код распределяется между приложениями, но все же локально доступен для всех из них.

+1

Мое приложение гораздо сложнее, я просто использовал это как пример :) Чем больше я думаю об этом, тем лучше, я прав, я лучше с плагином, потому что веб-сервис влечет за собой много больше сложностей, например, я должен был кэшировать как в приложениях мастера, так и в дочерних приложениях в случае, если какой-либо из них опустится. – Ivan

+0

Я читал о двигателях в Rails 3, и кажется, что они идеально подходят для того, что я хочу. Вот некоторая полезная информация: http://www.themodestrubyist.com/2010/03/05/rails-3-plugins---part-2---writing-an-engine/ – Ivan

+0

Это похоже на отличное место для начала , –

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