Desenvolvimento de plugins sem referência

Há uma semana que tento configurar uma rota personalizada no meu fórum usando um plugin. A rota deve ser acessível publicamente por qualquer pessoa. Quero que o plugin simplesmente exiba HTML de um template handlebar na rota especificada. Não consigo fazer o template renderizar.

Pesquisei como desenvolver plugins para Discourse e não encontrei nenhuma documentação substancial. Sempre que alguém faz uma pergunta sobre o desenvolvimento de plugins, a resposta é um link para um “guia” sobre o desenvolvimento de um plugin de administração que mostra um tentáculo roxo. Sempre que há uma pergunta sobre um template que não está sendo exibido, somos simplesmente direcionados para a documentação do Ember sobre roteadores.

Esse guia é bom, mas há mágica acontecendo em segundo plano que não é explicada para que possamos pegar as informações e seguir em frente. E se quisermos exibir uma rota pública? Como o arquivo plugin.rb é consumido pelo Discourse? Que outro código/declarações específicas do Discourse posso usar no arquivo plugin.rb como “add_admin_route” para adicionar rotas à minha aplicação? Existe uma estrutura de arquivos específica que devemos usar para que as rotas sejam resolvidas?

Basicamente, todos os desenvolvedores que criam plugins complexos, onde eles consultam a documentação para fazer isso? Sou um desenvolvedor experiente e simplesmente adicionar uma rota pública ao meu fórum e renderizar um template nessa rota é complicado, dadas as guias/informações disponíveis sobre a criação de plugins.

Qualquer ajuda é apreciada. Obrigado! :heart:

1 curtida

Michael, a resposta é: observe a arte anterior como documentação, pois ela pode rapidamente ficar desatualizada e tende a apenas arranhar a superfície. Em contraste, plugins populares são frequentemente mantidos muito atualizados e cobrem casos de uso mais complexos.

Usar repositórios existentes para entender abordagens é absolutamente o que eu e meus colegas aprendemos a fazer nos últimos anos.

Posso recomendar observar os do time principal do Discourse (official), os do Pavilion (pavilion) e meus repositórios para exemplos de como fazer as coisas (nessa ordem! :sweat_smile: ).

À medida que a plataforma evolui com novas versões de dependências e novas capacidades, plugins oficiais que utilizam as novas tecnologias adicionadas à plataforma, por exemplo, podem ser realmente úteis como pontos de partida.

Procure um plugin que funcionalmente faça algo semelhante ao que você deseja alcançar e copie a abordagem.

Aqui está um exemplo de um plugin adicionando uma rota:

2 curtidas