Вопрос

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

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

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

Это было полезно?

Решение

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

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

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

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

На стороне разработки движки Rails и / или плагины - это, вероятно, то, что вы ищете.

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

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

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

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

Некоторая поддержка плагинов ‘engine’ была объединена в ядро Rails кодовая база в Rails 2.3.

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

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

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

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

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

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

Красный Рудник они внедрили такого рода функциональность в свое потрясающее приложение.Возможно, вы захотите покопаться в исходный код за советами и подсказками

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

HTH

Другие советы

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top