Das ENV-Objekt in Ruby
In diesem Artikel werden wir uns mit den folgenden Themen beschäftigen:
- das
ENV
Objekt -
ENV
und die Funktionen der Standardbibliothek -
ENV
hinter den Kulissen
Vor dem Start
Ich freue mich, Ihnen unser neuestes Projekt vorzustellen: Wissenswertes über Ruby – Band 1
Bitte verbreiten Sie diesen Beitrag und teilen Sie ihn! 🙏
Danke für deine Zeit!
ENV
bietet eine API, um die Umgebungsvariablen zu manipulieren.
Indem es sich wie ein Hash
verhält, bietet es eine Reihe von Methoden, um Umgebungsvariablen hinzuzufügen, zu ändern, zu löschen und auf sie zuzugreifen, was definitiv Ruby-freundlich ist
In dem obigen Beispiel können wir eine kurze Verwendung der API sehen:
- 001- wir setzen den Wert
'cool!'
auf die UmgebungsvariableAN_ENV_VARIABLE
mit der MethodeENV.=
- 002- dann greifen wir auf den Wert von
AN_ENV_VARIABLE
mit der MethodeENV.
- 003- wir ändern den Wert von
AN_ENV_VARIABLE
auf'great!'
mit der MethodeENV.=
- 004- wir löschen die Umgebungsvariable
AN_ENV_VARIABLE
mit der MethodeENV.delete
- 005- wir versuchen, auf
AN_ENV_VARIABLE
zuzugreifen und geben einen Standardwert an, wenn er nicht existiert, indem wir die MethodeENV.fetch
verwenden
Das ist cool! Aber wo sind die Systemumgebungsvariablen?
ENV und die Funktionen der Standardbibliothek
Das ENV
Objekt verlässt sich auf die Funktionen der C-Standardbibliothek, um die Umgebungsvariablen zu verwalten.
Wenn man zum Beispiel die Methode ENV.
aufruft, ruft Ruby je nach Betriebssystem die entsprechende Funktion der C-Standardbibliothek auf – getenv(3)
für unixähnliche Betriebssysteme zum Beispiel – um die entsprechende Umgebungsvariable zu holen.
Dieses System ist effizient und stützt sich auf eine starke Standardbibliothek.
Außerdem wird nur auf die Umgebungsvariablen zugegriffen, die zur Laufzeit manipuliert werden. Es gibt keine Umgebungsvariablen, die beim Start des Ruby-Programms in den Speicher vorgeladen werden.
Schauen wir uns nun an, wie ENV
hinter der Szene implementiert ist.
ENV hinter der Szene
ENV
ist ein hashähnliches Objekt. Das bedeutet, dass es eine Instanz von Object
ist und dass es eine Reihe von Methoden hat, die denen einer Instanz von Hash
ähneln.
irb> ENV.class
=> Object
Hinter der Szene rekodiert das ENV
-Objekt die hash-ähnlichen Methoden (wie ENV
), um die *env(3) C-Funktionsfamilie zu verwenden. Das ENV
-Objekt ist also nur ein Ruby-Wrapper für C-Funktionen, die für die Verwaltung der Umgebungsvariablen zuständig sind
Außerdem erweitert das ENV
-Objekt das Enumerable
-Modul, überschreibt aber eine Reihe von Methoden dieses Moduls, wie zum Beispiel each
und each_pair
irb> ENV.singleton_class.included_modules
=>
Zusammenfassend ist ENV
eine „aufzählbare“ Instanz von Object
, die in einer globalen Konstante gespeichert ist.
Fühlen Sie sich frei, die Datei hash.c für weitere Informationen zu durchsuchen.
Voilà !