2016-06-11 12 views
0

Ich möchte ein Ruby Gem haben, das die gleiche ausführbare Datei wie ein anderes Gem haben wird.Ruby-Edelsteine ​​mit ausführbaren Dateien gleichen Namens erstellen?

Bei Aufruf mit command args wird entweder etwas ausgeführt oder der Befehl an das andere Gem übergeben.

Das erste Problem, das ich habe, ist, dass es nicht in der Lage ist, zwei gleichnamige ausführbare Dateien auszuführen. Ich erhalte diesen Fehler:

Bundler verwendet eine binstub, die für ein anderes Juwel erstellt wurde. Dies ist veraltet. In zukünftigen Versionen müssen Sie möglicherweise bundle binstub yourgem verwenden, um einen System-/Paketkonflikt zu umgehen.

Wie kann ich Gems mit den gleichen ausführbaren Dateien haben und sicherstellen, dass das Ziel ausgeführt wird?

Antwort

1

Sie können sich nicht auf Bundler oder Rubygems verlassen, um dies für Sie zu verwalten. Alles, was es tut, ist, eine ausführbare Datei, die Sie in Ihrer Edelstein-Spezifikation angegeben haben, in das Verzeichnis bin/ zu kopieren.

Das erste Problem, das Sie haben werden, ist, dass die ausführbare Datei von der Reihenfolge abhängig sein kann, in der die Edelsteine ​​installiert wurden, die Sie nicht garantieren können.

Ein weiteres Problem, das Sie haben, ist, dass Sie Code bei der Installation von Gem nicht ausführen können, so dass Sie keinen Code ausführen können, der dieses Setup für Leute automatisieren würde, die Ihr Juwel installieren.

Ich glaube, Ihr Juwel sollte eine nicht konfliktbehaftete ausführbare Datei bereitstellen. Sie können dann post install instructions in Ihrer Edelstein-Spezifikation angeben, die einem Benutzer angezeigt wird, der den Edelstein installiert, in der README, in einem Blog-Eintrag usw. Sie können dem Benutzer mitteilen, dass er einen Alias ​​erstellen muss, der auf Ihre ausführbare Datei verweist. In allen Shells, die ich kenne, werden Aliase vor ausführbaren Dateisystemen ausgeführt.

Für die Zeiten, wenn Menschen Ihren Alias ​​umgehen und die ursprüngliche ausführbare Datei ausführen möchten, können Sie den Leuten sagen, dass sie dem Befehl entkommen sollen, z. \original-gem. Das umgeht die Alias- und Funktions-Suche in den meisten Shells und erlaubt es Benutzern, Ihre super-geniale Version als Standard zu haben (durch den Alias) und eine Möglichkeit, einfach auf das Original zuzugreifen.

Verwandte Themen