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
Antwort
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!
Flauberghasting, dass ruby -h dies nicht ausgibt, noch bieten Sie eine 'verbose' Option für sie. Huch. – rogerdpack
@rogerdpack Ja, das ist seltsam. Berichtet [als Fehler] (http://bugs.ruby-lang.org/issues/7184). – steenslag
Jorg W Mittag hat einen ausführlicheren Kommentar zu '--disable-Edelsteine' unter http://stackoverflow.com/a/3253995/38765 –
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.
das ist eine faszinierende Idee - nur das Schmemp im Drehbuch zwicken. Genius! – rogerdpack
Was versuchen Sie damit zu erreichen? – phoet
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. –
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