Gestione dei conflitti di versione di Gem nei plugin Discourse

Ciao, sto creando un plugin per Discourse utilizzando gem esterne. Ho già incorporato alcuni suggerimenti da altri post riguardanti l’uso di gem esterne, come Requiring external gems e Plugin using own gem - #3 by kgish. Questi suggerimenti implicano l’aggiunta di pacchetti aggiuntivi necessari per i pacchetti esterni utilizzati. Funziona bene per lo sviluppo di un plugin per Discourse. Tuttavia, a volte, dopo ogni aggiornamento di Discourse, riscontro errori relativi a conflitti nelle versioni delle gem quando ricostruisco Discourse con il plugin e l’ultima versione di Discourse.

ecco un esempio di errore

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

Ho osservato una situazione simile in altri plugin, come visto in alcuni casi nei seguenti post del forum: Install discourse failed due to Custom Wizard plugin e Failed to Bootstrap after upgrade.

Attualmente, la soluzione che ho provato è aggiornare il pacchetto all’ultima versione, allineandolo alla versione utilizzata in Discourse Core.

Tuttavia, vorrei chiedere se esiste una soluzione a questo problema che non richieda l’aggiornamento del pacchetto per corrispondere all’ultima versione in Discourse Core ogni volta che voglio aggiornare.

Devi aggiornare (o fare un PR) a ciascun plugin dipendente per allineare le versioni, basandoti su Core. Non puoi mischiare le versioni.

In questo caso, se un plugin che utilizzi usa addressable-x.x.x, devi assicurarti che sia aggiornato a addressable-2.8.5.

2 Mi Piace

Grazie per la risposta, @merefield . Sì, questo è quello che faccio ogni volta che mi imbatto in conflitti con le versioni dei pacchetti. Forse devo considerare una migliore gestione delle versioni per il plugin in modo che gli utenti che desiderano ancora utilizzare una versione precedente di Discourse possano continuare a utilizzare il plugin.