Acredito que isso não seja possível devido à forma como os plugins são integrados aos recursos do aplicativo, o que precisa ser feito no momento da compilação, especialmente porque alguns elementos dos plugins impactam o back-end.
Algumas mitigações:
Personalize com Componentes de Tema o máximo possível. Eles podem ser substituídos e atualizados online.
Defina um conjunto de plugins e mantenha-se fiel a essa lista. Por que você precisa alterar a configuração tão frequentemente?
Se você apenas precisa atualizar um plugin, use a ferramenta de atualização online.
Agende a adição de novos plugins para quando você for obrigado a fazer uma recompilação devido a outras alterações fundamentais no aplicativo principal.
A única recomendação real que podemos dar aqui é planejar com antecedência. Simplesmente não há substituto para isso.
Use uma instância pequena para testar e aprovar quaisquer alterações de plugin que deseje fazer, e depois agende uma janela semanal ou mensal para aplicar todas essas alterações em seu site ao vivo.
Dessa forma, seus usuários não serão significativamente afetados por essas atividades, e você reduzirá consideravelmente o risco de tempo de inatividade adicional devido a problemas de compatibilidade.
Com uma configuração que possui vários contêineres web, o tempo de inatividade durante uma reconstrução pode certamente ser evitado reconstruindo/implementando um contêiner web de cada vez.
Sinto muito, @Faizan_Zahid, mas você poderia ter escolhido um título melhor. Talvez você quisesse dizer “plugins” e não “Discourse”. Eu estava esperando alguém pedindo uma funcionalidade para remover o Discourse de um servidor
Você quer poder instalar/desinstalar plugins sem precisar reconstruir. Parece que não é possível, infelizmente
Então, você gostaria de minimizar o tempo de inatividade ao precisar reconstruir. Isso já foi um tema ultimamente: Ajuda com configuração de “tempo de inatividade zero” (o que não evoluiu muito para onde provavelmente deveria ter ido).
O que talvez precisemos aqui é de um bom tutorial sobre como configurar uma instalação com 2 containers web e como usá-la. Essa parece ser a configuração mais eficiente (e também provavelmente a mais complicada). Não tenho conhecimento suficiente para fazer um tutorial assim, mas se tivesse, faria. Alguém se voluntaria?
Tenho o plano de assumir a tarefa de criar guias fáceis para uma variedade de casos de uso avançados, incluindo os mencionados acima. Está na lista de pendências
Eu não estava ciente disso. Embora, desde que nada mude significativamente na estrutura do Discourse, deve continuar funcionando. Ênfase no deve. Me pergunto se o autor permitiria que outra pessoa assumisse o projeto caso ele tenha seguido em frente.
Com o tempo, todos os plugins precisam ser atualizados. Mesmo pequenas mudanças ocasionalmente causam problemas para plugins do Discourse em desenvolvimento ativo. Simplesmente não é possível prever e, definitivamente, não é algo em que qualquer um de nós possa confiar.
Um plugin que gerencia a instalação de outros plugins e que não está sendo mantido é uma proposta muito arriscada. Confiar no otimismo para continuar usando-o parece uma ideia muito ruim.
Trabalhei apenas com dois clientes que expressaram interesse em usá-lo. Assim que ficou claro que o Procourse não existia mais, ambos ficaram ansiosos para migrar.
Isso se resume ao fato de que os DeVs deveriam considerar incluir esse tipo de recurso nativamente no Discourse, mesmo que como uma opção ativável via linha de comando, caso a segurança possa ser uma preocupação.
É apenas algo que precisa estar no roteiro. Não é muito diferente, às vezes, de usar uma interface gráfica no Linux para instalar versus a linha de comando; no entanto, há alguns casos em que isso funciona bem.
Sempre que você usa instalações não oficiais, há risco de quebras. Então, por exemplo, a capacidade de ativar ou desativar um plugin como um tema ou componente de tema seria ideal.
Recentemente, tive um problema em que parece que os ícones de categoria quebraram as coisas. Mesmo usando um tema básico sem outras modificações de CSS ou componentes. Demorou um pouco para identificar a causa.
O estranho é que funciona na nossa instalação de teste separada, que executa a versão beta mais recente do Discourse.