He notado que, para la personalización del diseño, se recomienda usar Temas en lugar de Complementos. ¿Cuáles son las ventajas?
Desde el punto de vista del desarrollo, veo los Temas como demasiado engorrosos. Necesito una herramienta más para poder ver los cambios de código en tiempo real: Consola CLI de Temas.
También entiendo que los Temas pueden ser seleccionables por el usuario (yo no necesito esa función).
¿Cuáles son las ventajas de los Temas sobre los Complementos en producción?
Por lo tanto, si no necesitas crear rutas, modificar serializadores o almacenar datos personalizados, es probable que puedas lograr tu objetivo solo con un tema.
El mayor desafío que vemos con los plugins personalizados desde una perspectiva de soporte son las caídas del sitio. Esto suele deberse a que el plugin parchea una clase o método de Rails en el núcleo que ha cambiado y el plugin aún no se ha actualizado para tenerlo en cuenta. Si algo cambia en el lado de Ember y, por lo tanto, rompe el tema o el componente del tema, el sitio puede no renderizarse correctamente, pero se puede desactivar rápidamente usando /safe-mode.
Entiendo tu punto. También diría que la gem te permite desarrollar tu tema localmente y sincronizarlo con cualquier sitio de Discourse al que tengas una clave de API, incluido theme-creator.discourse.org. Ni siquiera necesitas configurar un entorno de desarrollo local si tienes esa gem en ejecución.
¡Guau, las respuestas aquí son oro puro! Tengo muy poco que añadir.
Lo único que creo importante mencionar es que, internamente en Discourse, estamos avanzando para separar algunos plugins ahora en “plugin para el backend” y “tema para el frontend”. Estamos pensando en este desafío de “distribución” cuando las cosas están mezcladas de esta manera.
En general, mi recomendación extremadamente firme es recurrir a crear plugins solo si realmente los necesitas. Cuando necesitas modificar el backend en Ruby, no tienes más opción. Se desaconseja encarecidamente un plugin que solo realiza cambios en el frontend. Es más difícil mantenerlo actualizado y mucho menos flexible en cuanto a su uso.