Nous avons créé une directive Sprockets personnalisée pour le plugin Custom Wizard

Le plugin Custom Wizard crée sa propre application Ember et réutilise certains des assets du noyau de Discourse.

Pour cela, nous utilisons un fichier JavaScript nommé wizard-custom.js avec des directives Sprockets ciblant des fichiers individuels.

Dans certains cas, nous avions besoin de nombreux fichiers provenant du même dossier et avons longtemps été tentés d’utiliser require_tree, mais malheureusement, cela n’est pas possible pour les raisons suivantes :

  • Le fichier wizard-custom.js est situé à l’intérieur du plugin, son load path est donc différent de celui de Discourse, et nous ne pouvons importer que des fichiers situés dans ce load path.
  • Sprockets n’autorise pas les chemins absolus lors de l’utilisation de require_tree.

Résoudre ce problème permettrait également au plugin de moins souvent se briser en raison de modifications dans le noyau de Discourse.

Pour atténuer cela, nous avons créé une directive Sprockets personnalisée appelée require_tree_discourse qui recherche spécifiquement des assets à l’intérieur du dossier Discourse en utilisant des chemins absolus. Voici la PR contenant ce code.

Nous pensons que cela pourrait intéresser les développeurs de Discourse et les développeurs Rails en général.

Malheureusement, nous avons dû annuler cette modification, car elle ne fonctionne pas en production.

Il semble que les plugins soient chargés un peu plus tard par rapport au moment où les fichiers JS sont lus.

Cela fonctionne. Nous réintroduirons la modification bientôt.

Nous avons enfin intégré cela dans notre code.

Gardez à l’esprit que j’estime que dans les 12 prochains mois, nous abandonnerons les sprockets pour des builds basés sur ember-cli. @eviltrout a déjà commencé à travailler sur l’étude de cette migration.

Merci pour l’info en amont. Toute orientation dans ce sens sera d’une grande aide. cc @angus