Abbiamo creato una direttiva Sprockets personalizzata per il plugin Custom Wizard

Il plugin Custom Wizard crea la propria app Ember e prende in prestito alcune risorse dal nucleo di Discourse.

Per questo motivo, utilizziamo un file JS chiamato wizard-custom.js con direttive Sprockets che puntano a file specifici.

In alcuni casi, avevamo bisogno di molti file dalla stessa cartella ed eravamo tentati di usare require_tree per molto tempo, ma purtroppo ciò non è possibile per i seguenti motivi:

  • Il file wizard-custom.js si trova all’interno del plugin, quindi il suo load path è diverso da quello di Discourse e possiamo richiedere solo file all’interno del load path.
  • Sprockets non consente percorsi assoluti quando si utilizza require_tree.

Risolvere questo problema significherebbe anche che il plugin si interrompe meno frequentemente a causa di modifiche nel nucleo di Discourse.

Per mitigare ciò, abbiamo creato una direttiva Sprockets personalizzata chiamata require_tree_discourse che cerca specificamente le risorse all’interno della cartella Discourse utilizzando percorsi assoluti. Ecco la PR che contiene quel codice.

Pensavamo che sarebbe stato interessante per gli sviluppatori di Discourse e in generale per gli sviluppatori Rails.

Purtroppo, abbiamo dovuto annullare questa modifica, poiché non funziona in produzione.

Sembra che i plugin vengano caricati un po’ più tardi rispetto al momento in cui vengono letti i file js.

Funziona. Reintrodurremo la modifica a breve.

Abbiamo finalmente introdotto questo nel nostro codice.
https://github.com/paviliondev/discourse-custom-wizard/pull/114

Tieni presente che stimo che entro 12 mesi avremo abbandonato i sprockets a favore delle build basate su ember-cli. @eviltrout ha già iniziato a lavorare all’indagine per questa transizione.

Grazie per l’avviso anticipato. Qualsiasi indicazione in quella direzione sarà di grande aiuto. cc @angus