Estoy trabajando en un cms y quería poder ofrecer extensiones personalizadas para ciertas cuentas. Como tener un complemento con código personalizado que solo está disponible o que solo usa esa cuenta. Estas extensiones personalizadas serían específicas para las necesidades comerciales de una cuenta y quizás poco probable que otras cuentas la necesiten, pero tal vez. ¿Hay alguna forma de que esto se pueda hacer y cargar sin tener que reiniciar toda la aplicación, creando así un tiempo de inactividad para las otras cuentas?Arquitectura del complemento para los rieles cms
Respuesta
En términos de código del plugin por cliente, se puede almacenar el código en un modelo de datos y luego eval() el código para ejecutar dinámicamente. (Por supuesto, le recomendamos que realice una revisión/depuración de la cordura en la actualización para asegurarse de que el código no contenga llamadas maliciosas). Otro enfoque podría ser desarrollar una biblioteca de etiquetas personalizadas, muy similar a lo que los desarrolladores de Radiant CMS han creado ... y luego dejar que los usuarios "programen" su comportamiento utilizando las etiquetas proporcionadas. Esto le da más control y una mayor seguridad a expensas de una menor flexibilidad.
En términos de la pregunta sobre el tiempo de inactividad, si está utilizando un enfoque moderno de implementación de rieles, no veo cómo esto debería ser un problema. El enfoque anterior de eval() no requiere un reinicio (a menos que su código personalizado llame a "incluir ..." en bibliotecas que no están instaladas en el momento del último arranque, pero tener estas bibliotecas instaladas también es un "fuera de banda" "problema que necesitaría resolver.
Passenger le brinda el archivo restart.txt que puede tocar para forzar una actualización. Del mismo modo, hay recetas para mestizos (como see saw) que le permiten reiniciar progresivamente su pila de mestizos para evitar el tiempo de inactividad. Me gustaría separar estos dos aspectos mentalmente si fuera usted, ya que las dependencias entre los dos no son tan grandes. Espero que esto ayude.
Creé un cms y agregué complementos para él. Lo mejor que puede hacer es hacer que todo se base en la base de datos, el complemento existe para todos, técnicamente, pero solo puede usarlo si lo "compró", o de alguna otra manera de encenderlo ... que es realmente solo un registro db.
Eso sería 0 tiempo de inactividad. :) Por otra parte, no tengo idea de cómo se ve el resto de tu instalación. Creo que su solución se adaptará específicamente a su diseño de sistema cms.
¿cuánto tiempo sería este tiempo de inactividad realmente? me refiero a ejecutar migraciones y cosas sería un dolor para un sistema que permite a cualquier Tom Dick o Harry subir un complemento. Debería verificar que las migraciones se hayan configurado correctamente, etc., si no está obteniendo ese 'lujo' y simplemente dejar que hagan algo 'ordenado' en js, entonces supongo que se trata de reiniciar el pasajero, que es ¿Qué 5 segundos?
Revisaré otros CMS 'famosos' como radiantes o algo para ver si/cómo lo hacen, personalmente. buena suerte.
No sé si esto es exactamente lo que está tratando de lograr, pero ¿ha revisado panqueque?
Pancake es una herramienta de estructura & que le permite apilar y combinar ligeramente las aplicaciones basadas en Rack.
http://www.rubyinside.com/pancake-rack-webapps-stacking-2863.html
- 1. Arquitectura para la extensión/comunicación del complemento
- 2. Arquitectura tipo complemento en .NET
- 3. Arquitectura de complemento para ASP.NET MVC
- 4. ¿Hay algún complemento de prueba de seguridad para los rieles?
- 5. Complemento de contenido predeterminado en django-cms
- 6. ¿Cómo diseñar software extensible (arquitectura de complemento)?
- 7. rieles/Jquery autocompletar automático complemento completo para la ciudad, país
- 8. Historias del sistema para arquitectura ágil
- 9. Migraciones del complemento para Redmine
- 10. Creación de una arquitectura de complemento con Adobe AIR
- 11. CMS incrustable para .NET
- 12. Agregar documentación para los ámbitos del modelo en rieles
- 13. Arquitectura del lado del servidor para aplicaciones web móviles
- 14. CMS simple para .Net Webshop
- 15. Instalación del complemento SVN para Eclipse en Ubuntu
- 16. Arquitectura de la arquitectura del juego: ¿ver componentes o MVC?
- 17. arquitectura para alta disponibilidad
- 18. Rails 3 Recomendación CMS
- 19. Cómo estructurar los permisos de usuario para un cms
- 20. Cómo volcar completamente los datos para Django-CMS
- 21. ¿Hay un CMS para Lift?
- 22. arquitectura del proyecto ASP.NET MVC
- 23. Python CMS para mi propio sitio web?
- 24. Inicializadores específicos del entorno para rieles?
- 25. C# plugin arquitectura pregunta
- 26. Arquitectura del sistema Netflix/Hulu
- 27. NS (Array | Tree) Arquitectura del controlador para NSViewControllers múltiples
- 28. Configuración del complemento Grails
- 29. Arquitectura para aplicaciones WinForms?
- 30. arquitectura OO para la prestación de los juegos basados shader
Creo que esta es una solución bastante buena (aunque eval() es bastante aterrador) porque yo soy el que estaría desarrollando el código, no los usuarios. Por supuesto, si hubiera una masa-ap módulo peal entonces podría simplemente construirlo de forma normal y restringir el acceso a él. La instancia específica es para la personalización por cuenta, así que creo que esto funcionaría mejor. – bwizzy