Gerenciando conflitos de versão do Gem em plugins do Discourse

Olá, estou construindo um plugin para o Discourse usando gems externas. Já incorporei algumas sugestões de outros posts sobre o uso de gems externas, como Requiring external gems e Plugin using own gem - #3 by kgish. Essas sugestões envolvem adicionar pacotes adicionais necessários para os pacotes externos utilizados. Funciona bem para o desenvolvimento de um plugin para o Discourse. No entanto, às vezes, após cada atualização do Discourse, encontro erros relacionados a conflitos de versões de gems ao reconstruir o Discourse com o plugin e a versão mais recente do Discourse.

Aqui está um exemplo de erro:

rake aborted!
Gem::LoadError: can't activate addressable-2.8.4, already activated addressable-2.8.5

Observei uma situação semelhante em outros plugins, como visto em alguns casos nas seguintes postagens do fórum: Install discourse failed due to Custom Wizard plugin e Failed to Bootstrap after upgrade.

Atualmente, a solução que tenho tentado é atualizar o pacote para a versão mais recente, alinhando-o com a versão usada no Discourse Core.

No entanto, gostaria de perguntar se existe uma solução para esse problema que não exija a atualização do pacote para corresponder à versão mais recente no Discourse Core toda vez que eu quiser atualizar.

Você precisa atualizar (ou criar um PR) para cada plugin dependente para alinhar as versões, com base no Core. Você não pode misturar versões.

Neste caso, se algum plugin que você usa, usa addressable-x.x.x, você precisa garantir que ele seja atualizado para addressable-2.8.5.

2 curtidas

Obrigado pela resposta, @merefield. Sim, é isso que eu faço toda vez que me deparo com conflitos nas versões do pacote. Talvez eu precise considerar um versionamento melhor para o plugin, para que os usuários que ainda desejam usar uma versão mais antiga do Discourse possam continuar usando o plugin.