Wie verwende ich die angegebene Version von Ruby für Shell-Skripte mit rbenv?

8

Ich werde ein kurzes Skript in Ruby schreiben. Und ich möchte die Ruby-Version von shebang oder auf andere Weise angeben.

Ich werde das Skript in vielen Umgebungen verwenden. Ich verwende rbenv in den Umgebungen, aber es ist nicht sicher, welche Version von Ruby installiert ist.

Das Skript muss fehlschlagen, wenn die angegebene Version von Ruby nicht installiert ist.

Wie kann ich es tun? Gibt es einen guten Weg, dem ich folgen sollte?

Eisensand
quelle

Antworten:

7

Laut den offiziellen Dokumenten klingt es so, als müssten Sie Ihren Skripten nur Folgendes voranstellen:

#!/usr/bin/env ruby

Führen Sie dann eine der folgenden Aktionen aus, um festzustellen, rbenvwelche Ruby-Version verwendet werden soll:

Auszug: https://github.com/sstephenson/rbenv

Auswahl der Ruby-Version

Wenn Sie einen Shim ausführen, rbenvbestimmen Sie, welche Ruby-Version verwendet werden soll, indem Sie sie aus den folgenden Quellen in dieser Reihenfolge lesen:

  1. Die RBENV_VERSIONUmgebungsvariable, falls angegeben. Mit dem rbenvShell-Befehl können Sie diese Umgebungsvariable in Ihrer aktuellen Shell-Sitzung festlegen.

  2. Die erste .ruby-versionDatei, die durch Durchsuchen des Verzeichnisses des Skripts, das Sie ausführen, und aller übergeordneten Verzeichnisse gefunden wird, bis das Stammverzeichnis Ihres Dateisystems erreicht ist.

  3. Die erste .ruby-versionDatei, die durch Durchsuchen des aktuellen Arbeitsverzeichnisses und aller übergeordneten Verzeichnisse gefunden wurde, bis das Stammverzeichnis Ihres Dateisystems erreicht ist. Sie können die .ruby-versionDatei im aktuellen Arbeitsverzeichnis mit dem rbenvlokalen Befehl ändern .

  4. Die globale ~/.rbenv/versionDatei. Sie können diese Datei mit dem rbenvglobalen Befehl ändern . Wenn die globale Versionsdatei nicht vorhanden ist, wird rbenvdavon ausgegangen , dass Sie den "System" -Rubin verwenden möchten, dh welche Version auch immer ausgeführt wird, wenn Sie rbenvsich nicht in Ihrem Pfad befinden.

Mit diesem Befehl können Sie dann .ruby-versionzusammen mit dem Ruby-Skript eine Datei im Verzeichnis erstellen .

$ rbenv local 1.9.3-p327
slm
quelle
Jetzt veraltet; Pro angegebenem Dokument; Wenn Sie jetzt Skripte oder Binstubs in einer Anwendung mit einer .ruby-Versionsdatei ausführen, verwendet rbenv automatisch die angegebene Ruby-Version der Anwendung, unabhängig davon, aus welchem ​​Verzeichnis sie ausgeführt werden.
AnneTheAgile