Het ENV-object in Ruby

apr 29, 2021
admin

Het ENV-object in Ruby
Mehdi Farsi

Follow

Jul 19, 2018 – 3 min read

In dit artikel gaan we de volgende onderwerpen verkennen:

  • het ENV object
  • ENV en de standaard bibliotheekfuncties
  • ENV achter de schermen

Voordat u begint

Ik ben verheugd om ons nieuwste project met u te delen: Leuke weetjes over Ruby – Deel 1

Voel je vrij om het woord te verspreiden en deel deze post!

Bedankt voor uw tijd!

ENV biedt een API om omgevingsvariabelen te manipuleren.

Door zich te gedragen als een Hash, biedt het een set methoden om omgevingsvariabelen toe te voegen, te wijzigen, te verwijderen en te benaderen die beslist Ruby-vriendelijk is

In het bovenstaande voorbeeld kunnen we een kort gebruik van de API zien:

  • 001- we stellen de waarde 'cool!' in op de AN_ENV_VARIABLE omgevingsvariabele met behulp van de ENV.= methode
  • 002- dan krijgen we toegang tot de waarde van AN_ENV_VARIABLE met behulp van de ENV. methode
  • 003- we wijzigen de waarde van AN_ENV_VARIABLE in 'great!' met behulp van de ENV.= methode
  • 004- we verwijderen de AN_ENV_VARIABLE omgevingsvariabele met de ENV.delete methode
  • 005- we proberen toegang te krijgen tot AN_ENV_VARIABLE en we geven een standaardwaarde op als die niet bestaat met de ENV.fetch methode

Dat is cool! Maar waar zijn de systeem omgevingsvariabelen?

ENV en de standaard bibliotheek functies

Het ENV object vertrouwt op de C standaard bibliotheek functies om de omgevingsvariabelen te beheren.

Wanneer u bijvoorbeeld de ENV. methode aanroept, roept Ruby de juiste C standaard bibliotheek functie aan, afhankelijk van uw OS – getenv(3) voor unix-achtige OS bijvoorbeeld – om de juiste omgevingsvariabele op te halen.

Dit systeem is efficiënt en vertrouwt op een sterke standaard bibliotheek.

Daarnaast worden alleen de gemanipuleerde omgevingsvariabelen tijdens runtime benaderd. Er worden geen omgevingsvariabelen vooraf in het geheugen geladen bij het opstarten van het Ruby-programma.

Zo, laten we nu eens kijken hoe ENV achter de schermen is geïmplementeerd.

ENV achter de schermen

ENV is een hash-achtig object. Dit betekent dat het een instantie is van Object en dat het een aantal methoden heeft die lijken op een instantie van Hash.

irb> ENV.class
=> Object

In de scene hercodeert het ENV object de hash-achtige methoden (als ENV) om de *env(3) C functies familie te gebruiken. Dus het ENV object is slechts een Ruby wrapper op C functies die belast zijn met het beheer van de omgevingsvariabelen

Daarnaast breidt het ENV object de Enumerable module uit, maar overschrijft een stel methoden van deze module zoals each en each_pair bijvoorbeeld

irb> ENV.singleton_class.included_modules
=>

Om samen te vatten, ENV is een “enumerable” instantie van Object opgeslagen in een globale constante.

Voel je vrij om het hash.c bestand door te bladeren voor meer informatie.

Voilà !

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.