El plugin Custom Wizard crea su propia aplicación Ember y toma prestados algunos de los activos del núcleo de Discourse.
Para ello, utilizamos un archivo JS llamado wizard-custom.js con directivas de Sprockets dirigidas a archivos individuales.
En algunos casos, requeríamos muchos archivos de la misma carpeta y durante mucho tiempo tuvimos la tentación de usar require_tree, pero desafortunadamente, eso no es posible por las siguientes razones:
- El archivo
wizard-custom.jsestá ubicado dentro del plugin, por lo que suload pathes diferente al de Discourse y solo podemos requerir archivos dentro delload path. - Sprockets no permite rutas absolutas al usar
require_tree.
Resolver esto también significaría que el plugin se rompe con menos frecuencia debido a cambios en el núcleo de Discourse.
Para mitigar esto, creamos una directiva personalizada de Sprockets llamada require_tree_discourse que busca específicamente activos dentro de la carpeta de Discourse usando rutas absolutas. Aquí está el PR que contiene ese código.
Pensamos que sería interesante para los desarrolladores de Discourse y, en general, para los desarrolladores de Rails.