Frage Gibt es eine Möglichkeit, ruby1.9 aufzurufen, ohne Rubygems zu laden?


Ruby 1.9 ist also wirklich nett, da es automatisch Rubygems benötigt und somit auch wenn du anrufst require 'somegem' ohne zuerst Rubygems zu benötigen, wird es funktionieren, und das ist im Allgemeinen fantastisch.

Aber ich habe eine Menge Shell-Skripte mit Ruby, und sie sind in der Regel nicht auf Rubygems angewiesen. Shell-Tools sollten sofort ausgeführt werden, und das Laden von Rubygems für nichts ist ein großer Nachteil, vor allem weil es eine Reihe von Festplattenoperationen mit verstreuten kleinen Dateien beinhaltet.

Ich möchte in der Lage sein, Ruby zu sagen, wenn man diese Shell-Skripte ausführt, um das Laden von Edelsteinen zu überspringen. Idealerweise so etwas wie #!ruby --no-rubygems in der Shebang-Linie.

Gibt es so etwas? Oder vielleicht eine Kompilierung Option, die Ruby Rubygems erzählen muss manuell erforderlich sein?


8
2017-07-15 06:13


Ursprung


Antworten:


Ja, Sie können das verwenden --disable-gems Möglichkeit.

Beachten Sie, dass das Übergeben von Optionen in der Shebang-Zeile von Ihrem Betriebssystem abhängt. Einige Betriebssysteme unterstützen keine Übergabeoptionen überhauptEinige unterstützen nur das Überholen ein Option oder Argument.

Also, wenn Sie zum Beispiel haben

#!/usr/bin/env ruby

Dann ist es ziemlich unwahrscheinlich, dass Sie die Option bis zum Ende anhängen können. Wenn OTOH du änderst das zu

#!/usr/local/bin/ruby --disable-gems

Dann haben Sie den Speicherort der Ruby-Binärdatei in Ihrem Skript fest verdrahtet.

Und natürlich gibt es Betriebssysteme, die Shebang-Linien nicht interpretieren überhaupt. (Schließlich wurden sie in keinem Standard spezifiziert und sind nicht einmal richtig dokumentiert.)

Eine Alternative wäre das Einstellen der RUBYOPT Umgebungsvariable in Ihrer Shell-Umgebung und wechseln Sie einfach in eine andere Umgebung mit RUBYOPT nicht gesetzt (oder auf -w, mein persönlicher Favorit) für deine Ruby-Entwicklung.


5
2017-07-15 08:58