Criamos uma diretiva Sprockets personalizada para o plugin Custom Wizard

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.js está localizado dentro do plugin, então seu load path é diferente do do Discourse, e só podemos requerer arquivos dentro do load 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.

Infelizmente, tivemos que reverter essa alteração, pois não está funcionando em produção.

Parece que os plugins são carregados um pouco mais tarde em comparação com a leitura dos arquivos JS.

Funciona mesmo. Reintroduziremos a alteração em breve.

Finalmente introduzimos isso no nosso código.

Tenha em mente que estimo que, dentro de 12 meses, abandonaremos os sprockets em favor de builds baseados no ember-cli. @eviltrout já começou a trabalhar na investigação dessa mudança.

Obrigado pela antecedência. Qualquer orientação nessa direção será de grande ajuda. cc @angus