Gestion des conflits de versions de Gem dans les plugins Discourse

Salut, je construis un plugin pour Discourse en utilisant des gems externes. J’ai déjà intégré certaines suggestions d’autres posts concernant l’utilisation de gems externes, comme Requiring external gems et Plugin using own gem - #3 by kgish. Ces suggestions impliquent l’ajout de paquets supplémentaires nécessaires pour les paquets externes utilisés. Cela fonctionne bien pour le développement d’un plugin pour Discourse. Cependant, parfois, après chaque mise à jour de Discourse, je rencontre des erreurs liées à des conflits de versions de gems lors de la reconstruction de Discourse avec le plugin et la dernière version de Discourse.

Voici un exemple d’erreur :

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

J’ai observé une situation similaire dans d’autres plugins, comme on peut le voir dans certains cas dans les posts de forum suivants : Install discourse failed due to Custom Wizard plugin et Failed to Bootstrap after upgrade.

Actuellement, la solution que j’essaie est de mettre à jour le paquet à la dernière version, en l’alignant sur la version utilisée dans Discourse Core.

Cependant, j’aimerais savoir s’il existe une solution à ce problème qui ne nécessite pas de mettre à jour le paquet pour correspondre à la dernière version de Discourse Core chaque fois que je souhaite mettre à jour.

Vous devez mettre à jour (ou faire une PR) pour chaque plugin dépendant afin d’aligner les versions, en vous basant sur Core. Vous ne pouvez pas mélanger les versions.

Dans ce cas, si un plugin que vous utilisez utilise addressable-x.x.x, vous devez vous assurer qu’il est mis à jour avec addressable-2.8.5.

2 « J'aime »

Merci pour votre réponse, @merefield. Oui, c’est ce que je fais à chaque fois que je rencontre des conflits avec les versions des packages. Peut-être que je dois envisager une meilleure gestion des versions pour le plugin afin que les utilisateurs qui souhaitent toujours utiliser une ancienne version de Discourse puissent continuer à utiliser le plugin.