6

Tengo que crear un sitio de redes sociales en Ruby on Rails. Las características en el sitio pueden cambiar de vez en cuando; por lo que necesitaremos agregar/eliminar funciones con facilidad. Además, podemos estar construyendo otro sitio de redes sociales. Debido a estas razones, estamos pensando en crear un marco básico para los sitios de redes sociales en RoR con la función de instalar o desinstalar extensiones del marco.¿Cómo tengo arquitectura de complementos en Ruby on Rails?

¡Trabajé previamente en Joomla! CMS y su arquitectura para agregar/eliminar extensiones es una especie de lo que estoy viendo. En un Joomla! la instalación suele ser un lado del administrador desde el que puede agregar/eliminar/personalizar extensiones.

Soy nuevo en RoR y me resulta un poco difícil decidir cómo hacerlo. Cualquier ayuda será apreciada.

+0

Rails es un poco menor nivel de Joomla ...es posible que necesite construir parte de la infraestructura usted mismo, o use una aplicación existente de Rails. –

+0

@Toby - Probablemente estaba actualizando como lo comentó. Estoy de acuerdo con usted en que Rails es definitivamente de nivel inferior @Shree - Vea algunos ejemplos de lo que se puede hacer especialmente nota Redmine y ADVA CMS – Spasm

Respuesta

15

ACTUALIZACIÓN 2015: este fue respondida en 2009 muchas cosas han cambiado

plug-ins han sido sustituidos por gemas y Motores para toda la información que necesita en los motores: http://guides.rubyonrails.org/engines.html

Los motores son una fantástica forma de crear código encapsulado y reutilizable para sus aplicaciones de rieles.

respuesta original como referencia

en los motores de los carriles laterales de desarrollo y/o plugins es probablemente lo que busca.

Rails Engines are small subsets of an application that can be dropped into any of your Rails applications and handle common parts of the application from scratch.

Diga por ejemplo, su aplicación de red social tiene un wiki, blog, chat, etc Usted más que probable que quieren crear un motor de motor de wiki, blog de motor y la sala de chat.

Engines le permite reutilizar dicha funcionalidad en diferentes aplicaciones para que no tenga que repetirlo.

Tome un vistazo a: http://rails-engines.org/

Some support for ‘engine’ plugins has been merged into the Rails core codebase in Rails 2.3.

También recomendaría echar un vistazo a algunos proyectos públicos dicen en github y ver cómo las personas han utilizado motores.

Tome un vistazo a algunos motores:

Otros enlaces útiles para la lectura

En términos de funcionalidad aún se podía tener un área de administración que podrían activar determinadas funciones decir. su blog o wiki al permitir a los usuarios acceder a dichas áreas con un sistema de permisos/roles.

Si usted quiere construir un CMS que apoya algún tipo de extensiones como en Wordpress o Joomla, entonces tendrá que construir y proporcionar las actuales directivas o al menos ver cómo se cargarían/​​instalarían Motores/Complementos desde la perspectiva del usuario.

No está seguro sobre las implicaciones de seguridad de este

Redmine ha puesto este tipo de funcionalidad en su aplicación impresionante. Es posible que desee cavar alrededor de la source code de consejos y pistas

Finalmente Adva_CMS ha adoptado básicamente este enfoque y han creado a number of Engines para su aplicación CMS

HTH

4

motores siguen siendo una manera bastante sólida para vaya, la nueva ubicación para obtener información sobre los se encuentra aquí: http://guides.rubyonrails.org/engines.html

Pero lo que necesita es realmente más aplicaciones específicas. Muchas aplicaciones desarrollan estas cosas orgánicamente con el tiempo. Comienzan elaborando a mano algunos de estos y luego los vuelven a factorizar periódicamente hasta que encuentran patrones que se alinean con los patrones de diseño del software y luego desarrollan un marco de complemento.

¿Se va a exponer a su interfaz a los usuarios finales? Para desarrolladores de terceros? ¿Qué partes de la aplicación están controladas por estos complementos? ¿Es solo el nivel de presentación? ¿Afecta el modelo de datos? Considere el hecho de que cuando publica cualquier tipo de interfaz externa, está desarrollando contratos que debe cumplir.

debes revisar estos patrones de diseño: http://en.wikipedia.org/wiki/Software_design_pattern. Le ayudarán a descubrir cómo administrar su proceso de desarrollo. Si solo está trabajando en complementos para uso interno, ¿cuál es el verdadero propósito de ellos? ¿Qué los hace diferentes a los módulos?