Pregunta

Tengo que construyó un sitio de redes sociales en Ruby on Rails. Las características en el sitio pueden cambiar de vez en cuando; por lo que tendrá que añadir / quitar funciones con facilidad. Por otra parte, podemos estar construyendo otro sitio de redes sociales. Debido a estas razones, estamos pensando en construir un marco básico para los sitios de redes sociales en RoR con la función para instalar o desinstalar extensiones al marco.

He trabajado previamente en Joomla! CMS y su arquitectura para añadir / eliminar extensiones es algo de lo que estoy mirando. En un Joomla! la instalación por lo general hay una parte de administración desde la que se puede añadir / eliminar / personalizar las extensiones.

Soy nuevo en RoR y encontrarlo poco difícil decidir cómo hacer esto. Cualquier ayuda será apreciada.

¿Fue útil?

Solución

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 manera fantástica de edificio encapsulado y el código reutilizable para sus aplicaciones carriles.

Respuesta original de referencia

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

  

Rieles motores son pequeños subconjuntos de una   aplicación que se puede caer en   cualquiera de nuestras aplicaciones Rails y   manejar partes comunes de la aplicación   desde cero.

Digamos 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.

Motores le permite volver a utilizar dicha funcionalidad en diferentes aplicaciones, de modo que usted no tiene que repetirse.

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

  

Algunos soporte para plugins 'motor' tiene   han fusionado en el núcleo rieles   código base en Rails 2.3.

Yo también lo recomendaría echar un vistazo a algunos proyectos públicos decir en github y ver cómo las personas tienen motores usados.

Tome un vistazo a algunos motores:

Otros enlaces de interés 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. tu blog o wiki, al permitir a los usuarios acceder a estos ámbitos, con un sistema de permisos / papeles.

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 investigar cómo se cargar / instalar Motores / plugins 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 código fuente de consejos y pistas

Finalmente Adva_CMS ha adoptado básicamente este enfoque y han creado una serie de motores para su aplicación CMS

HTH

Otros consejos

Los motores son todavía una manera bastante sólida para ir, 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. Una gran cantidad de aplicaciones a desarrollar estas cosas orgánicamente con el tiempo. Empiezan a mano la elaboración de algunos de estos y luego se re-factor de ellas periódicamente hasta que encuentran patrones que se alinean con los patrones de diseño de software y luego se desarrolla un marco plug-in.

¿Se va a exponer a su interfaz a los usuarios finales? Para los desarrolladores de terceros? ¿Qué partes de la aplicación son controlados por estos plugins? ¿Es sólo la capa de presentación? Cómo afecta al modelo de datos? Considere el hecho de que al publicar cualquier tipo de interfaz externa, está desarrollando contratos que debe cumplir.

Es posible que echa un vistazo a estos patrones de diseño: http://en.wikipedia.org/wiki/Software_design_pattern . Ellos le ayudarán a encontrar la manera de manejar su proceso de desarrollo. Si sólo está trabajando en plugins para uso interno, entonces ¿cuál es el verdadero propósito de ellos? Lo que los hace diferente de los módulos?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top