Das ENV-Objekt in Ruby

Apr 29, 2021
admin

Das ENV-Objekt in Ruby
Mehdi Farsi

Follow

Jul 19, 2018 – 3 min read

In diesem Artikel werden wir uns mit den folgenden Themen beschäftigen:

  • das ENVObjekt
  • ENVund die Funktionen der Standardbibliothek
  • ENVhinter 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 Umgebungsvariable AN_ENV_VARIABLE mit der Methode ENV.=
  • 002- dann greifen wir auf den Wert von AN_ENV_VARIABLE mit der Methode ENV.
  • 003- wir ändern den Wert von AN_ENV_VARIABLE auf 'great!' mit der Methode ENV.=
  • 004- wir löschen die Umgebungsvariable AN_ENV_VARIABLE mit der Methode ENV.delete
  • 005- wir versuchen, auf AN_ENV_VARIABLE zuzugreifen und geben einen Standardwert an, wenn er nicht existiert, indem wir die Methode ENV.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à !

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.