O plugin Custom Wizard cria seu próprio aplicativo Ember e utiliza alguns dos ativos do núcleo do Discourse.
Para isso, usamos um arquivo JS chamado wizard-custom.js com diretivas Sprockets direcionadas a arquivos individuais.
Em alguns casos, precisamos de muitos arquivos da mesma pasta e ficamos tentados a usar require_tree por muito tempo, mas, infelizmente, isso não é possível pelos seguintes motivos:
- O arquivo
wizard-custom.jsestá localizado dentro do plugin, então seuload pathé diferente do do Discourse, e só podemos requerer arquivos dentro doload path. - O Sprockets não permite caminhos absolutos ao usar
require_tree.
Resolver isso também significaria que o plugin quebraria com menos frequência devido a alterações no núcleo do Discourse.
Para mitigar isso, criamos uma diretiva Sprockets personalizada chamada require_tree_discourse, que procura especificamente por ativos dentro da pasta do Discourse usando caminhos absolutos. Aqui está o PR contendo esse código:
Achei que seria interessante para desenvolvedores do Discourse e desenvolvedores Rails em geral.