Verwaltung von Gem-Versionskonflikten in Discourse-Plugins

Hallo, ich erstelle ein Plugin für Discourse unter Verwendung externer Gems. Ich habe bereits einige Vorschläge aus anderen Beiträgen zur Verwendung externer Gems übernommen, wie z. B. Requiring external gems und Plugin using own gem - #3 by kgish. Diese Vorschläge beinhalten das Hinzufügen zusätzlicher Pakete, die für die verwendeten externen Pakete benötigt werden. Dies funktioniert gut für die Entwicklung eines Plugins für Discourse. Manchmal treten jedoch nach jedem Discourse-Update Fehler im Zusammenhang mit Konflikten bei den Gem-Versionen auf, wenn Discourse mit dem Plugin und der neuesten Version von Discourse neu kompiliert wird.

Hier ist ein Beispiel für einen Fehler:

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

Ich habe eine ähnliche Situation in anderen Plugins beobachtet, wie in einigen Fällen in den folgenden Forenbeiträgen zu sehen ist: Install discourse failed due to Custom Wizard plugin und Failed to Bootstrap after upgrade.

Derzeit versuche ich als Lösung, das Paket auf die neueste Version zu aktualisieren, um es an die Version anzupassen, die in Discourse Core verwendet wird.

Ich möchte jedoch fragen, ob es eine Lösung für dieses Problem gibt, die nicht jedes Mal, wenn ich ein Update durchführen möchte, das Aktualisieren des Pakets auf die neueste Version in Discourse Core erfordert.

Sie müssen jedes abhängige Plugin aktualisieren (oder einen PR erstellen), um die Versionen basierend auf Core abzugleichen. Sie können keine Versionen mischen.

In diesem Fall müssen Sie sicherstellen, dass jedes von Ihnen verwendete Plugin, das addressable-x.x.x verwendet, auf den neuesten Stand mit addressable-2.8.5 gebracht wird.

2 „Gefällt mir“

Danke für die Antwort, @merefield. Ja, das mache ich jedes Mal, wenn ich auf Konflikte mit den Paketversionen stoße. Vielleicht muss ich eine bessere Versionierung für das Plugin in Betracht ziehen, damit Benutzer, die weiterhin eine ältere Version von Discourse verwenden möchten, das Plugin weiterhin nutzen können.