Obiectul ENV în Ruby

apr. 29, 2021
admin

Obiectul ENV în Ruby
Mehdi Farsi

Follow

19 iulie, 2018 – 3 min citește

În acest articol vom explora următoarele subiecte:

  • obiectul ENV
  • ENV și funcțiile bibliotecii standard
  • ENV din spatele scenei

Înainte de a începe

Sunt încântat să vă împărtășesc cel mai recent proiect al nostru: Fun Facts about Ruby – Volumul 1

Vă rugăm să nu ezitați să răspândiți vestea și să distribuiți această postare! 🙏

Mulțumim pentru timpul acordat!

ENV oferă un API pentru a manipula variabilele de mediu.

Actând ca un Hash, oferă un set de metode de adăugare, modificare, ștergere și accesare a variabilelor de mediu care este cu siguranță prietenos cu Ruby

În exemplul de mai sus putem vedea o scurtă utilizare a API-ului:

  • 001- setăm valoarea 'cool!' la variabila de mediu AN_ENV_VARIABLE folosind metoda ENV.=
  • 002- apoi accesăm valoarea lui AN_ENV_VARIABLE folosind metoda ENV.
  • 003- modificăm valoarea lui AN_ENV_VARIABLE la 'great!' folosind metoda ENV.=
  • 004-. ștergem variabila de mediu AN_ENV_VARIABLE folosind metoda ENV.delete
  • 005- încercăm să accesăm AN_ENV_VARIABLE și furnizăm o valoare implicită dacă aceasta nu există folosind metoda ENV.fetch

Este grozav ! Dar unde sunt variabilele de mediu ale sistemului?

ENV și funcțiile bibliotecii standard

Obiectul ENV se bazează pe funcțiile bibliotecii standard C pentru a gestiona variabilele de mediu.

De exemplu, când apelați metoda ENV., atunci Ruby apelează funcția corespunzătoare a bibliotecii standard C, în funcție de sistemul dumneavoastră de operare – getenv(3) pentru sistemele de operare de tip unix, de exemplu – pentru a prelua variabila de mediu corespunzătoare.

Acest sistem este eficient și se bazează pe o bibliotecă standard puternică.

În plus, sunt accesate doar variabilele de mediu manipulate în timpul execuției. Nu există variabile de mediu preîncărcate în memorie la pornirea programului Ruby.

Acum să aruncăm o privire la modul în care este implementat ENV în spatele scenei.

ENV în spatele scenei

ENV este un obiect de tip hash. Acest lucru înseamnă că este o instanță a lui Object și că are o serie de metode similare cu o instanță a lui Hash.

irb> ENV.class
=> Object

În spatele scenei, obiectul ENV recodifică metodele de tip hash (ca ENV) pentru a utiliza familia de funcții C *env(3). Așadar, obiectul ENV este doar un înveliș Ruby pentru funcțiile C care se ocupă de gestionarea variabilelor de mediu

În plus, obiectul ENV extinde modulul Enumerable, dar suprascrie o mulțime de metode ale acestui modul, ca de exemplu each și each_pair

irb> ENV.singleton_class.included_modules
=>

Pentru a recapitula, ENV este o instanță „enumerabilă” a lui Object stocată într-o constantă globală.

Nu ezitați să parcurgeți fișierul hash.c pentru informații suplimentare.

Voilà !

.

Lasă un răspuns

Adresa ta de email nu va fi publicată.