2012-10-17 17 views
6

Ich möchte meine App nicht in der Lage sein, alle installierten Edelsteine ​​zu verwenden. Gibt es einen Ruby 1.9-Startparameter oder eine programmgesteuerte Methode?Wie starten Sie Ruby 1.9 ohne Rubygems

+2

Was versuchen Sie damit zu erreichen? – phoet

+0

Wie würde deine App irgendwelche Edelsteine ​​verwenden, wenn du es nicht sagst? Es scheint, als würde das Hinzufügen von 'require'-Befehlen das Problem lösen. Es scheint auch so, als ob ein Benutzer, der den Ruby-Interpreter aufruft, ''-r'' verwenden könnte und Ruby dazu zwingt, etwas zu laden, egal ob der Code sagt oder nicht. –

+0

Ich möchte sicherstellen, dass ich nie irgendwelche System-Edelsteine ​​- nur lokale Dateien - in meinem Lauf verwende (um meine App für die Verteilung vorzubereiten). – rogerdpack

Antwort

10
ruby --disable-gems 

ist der Befehlszeilenparameter MRI (1.9). Msgstr "Es verhindert das Hinzufügen von gem Installationsverzeichnissen zum Standard - Ladepfad". (Die Ruby-Programmiersprache, S. 391)

Bearbeiten 25-10-2012: Ruby-Kern hatte die gleiche Idee wie @rogerdpack in den Kommentaren und fügte den ausführlicheren ruby --help Parameter hinzu. Ruby revision!

+0

Flauberghasting, dass ruby ​​-h dies nicht ausgibt, noch bieten Sie eine 'verbose' Option für sie. Huch. – rogerdpack

+1

@rogerdpack Ja, das ist seltsam. Berichtet [als Fehler] (http://bugs.ruby-lang.org/issues/7184). – steenslag

+0

Jorg W Mittag hat einen ausführlicheren Kommentar zu '--disable-Edelsteine' unter http://stackoverflow.com/a/3253995/38765 –

1

Mit Blick auf die rubygems configuration file, würde ich versuchen, gempath oder gemhome zu hacken, um zu sehen, ob Sie Standardeinstellungen überschreiben können (statt nur anhängen).

Wenn beispielsweise die Einstellung gempath leer ist oder auf /dev/null zeigt, die Verwendung von Systemedelsteinen verhindert wird, ist dies der richtige Weg.

Der Hauptvorteil dieser, wie ich es sehe, ist, dass Ihre Anti-Rubygems-Konfigurationsdatei kann Rubin 1.9 als Startparameter (so nicht codiert) übergeben, gut dokumentiert und in Ihr Repository eingecheckt.

All dies ist natürlich, ohne Berücksichtigung, dass rubygems Teil der Standardbibliothek Ruby 1.9 sind ist - so Rubin ersticken kann und sterben, wenn sie nicht den Zugang zu seinen Edelsteinen haben können, je nachdem, wie viel von Rubys Basis installieren erfordert Edelsteinfunktionalität. YMMV.

+0

das ist eine faszinierende Idee - nur das Schmemp im Drehbuch zwicken. Genius! – rogerdpack