Как мне получить архитектуру плагинов в Ruby on Rails?

Мне нужно создать сайт социальной сети на Ruby on Rails. Функции сайта могут время от времени изменяться; поэтому нам нужно будет с легкостью добавлять / удалять функции. Более того, мы можем создавать еще одну социальную сеть. По этим причинам мы думаем создать базовую структуру для сайтов социальных сетей в RoR с функцией установки или удаления расширений для этой платформы.

Я раньше работал в Joomla! CMS и ее архитектура для добавления / удаления расширений - это то, на что я смотрю. В Joomla! при установке обычно есть админка, с которой вы можете добавлять / удалять / настраивать расширения.

Я новичок в RoR и мне немного сложно решить, как это сделать. Любая помощь будет оценена по достоинству.


comment
Rails - это немного более низкий уровень, чем Joomla ... вам может потребоваться построить часть инфраструктуры самостоятельно или использовать существующее приложение Rails.   -  person Toby Hede    schedule 09.10.2009
comment
@Toby - Вероятно, обновлялся, как вы комментировали. Я согласен с вами, что Rails определенно ниже уровня @Shree - посмотрите несколько примеров того, что можно сделать, особенно обратите внимание на Redmine и ADVA CMS.   -  person Spasm    schedule 09.10.2009


Ответы (2)


ОБНОВЛЕНИЕ 2015: на этот вопрос ответили в 2009 году, многое изменилось

Плагины заменены Gems и Engines. Вся необходимая информация о Engine: http://guides.rubyonrails.org/engines.html

Движки - это фантастический способ создания инкапсулированного и многократно используемого кода для ваших rails-приложений.

Оригинальный ответ для справки

Что касается разработки, то, вероятно, вы ищете Rails Engines и / или плагины.

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

Скажем, например, в вашем приложении социальной сети есть вики, блог, чат и т. Д. Вы, скорее всего, захотите создать вики-движок, движок блога и движок чата.

Engine позволяет повторно использовать такие функции в различных приложениях, поэтому вам не придется повторяться.

Взгляните на: http://rails-engines.org/

Была объединена некоторая поддержка плагинов "движка" в основную кодовую базу Rails в Rails 2.3.

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

Взгляните на некоторые двигатели:

Другие полезные ссылки для чтения

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

Если вы хотите создать CMS, которая поддерживает какие-то расширения, такие как Wordpress или Joomla, вам придется либо создать ее и предоставить инструкции, либо, по крайней мере, посмотреть, как вы будете загружать / устанавливать модули / плагины с точки зрения пользователя.

Не уверен в последствиях этого для безопасности

Redmine добавила такую ​​функциональность в свое замечательное приложение. Вы можете покопаться в исходном коде в поисках советов и подсказок.

Наконец, Adva_CMS в основном принял этот подход и создал ряд движков для своего приложения CMS

HTH

person Spasm    schedule 09.10.2009

Двигатели по-прежнему являются довольно надежным способом, новое место для получения информации о них находится здесь: http://guides.rubyonrails.org/engines.html

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

Собираетесь ли вы предоставить свой интерфейс конечным пользователям? Сторонним разработчикам? Какие части приложения контролируются этими плагинами? Это просто уровень представления? Влияет ли это на модель данных? Учтите тот факт, что когда вы публикуете какой-либо внешний интерфейс, вы разрабатываете контракты, которые необходимо соблюдать.

Вы можете проверить эти шаблоны проектирования: http://en.wikipedia.org/wiki/Software_design_pattern . Они помогут вам понять, как управлять процессом разработки. Если вы просто работаете над плагинами для внутреннего использования, то какова их реальная цель? Что отличает их от модулей?

person Jason Mcmunn    schedule 27.12.2014