Obiectul ENV în Ruby
Î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 mediuAN_ENV_VARIABLE
folosind metodaENV.=
- 002- apoi accesăm valoarea lui
AN_ENV_VARIABLE
folosind metodaENV.
- 003- modificăm valoarea lui
AN_ENV_VARIABLE
la'great!'
folosind metodaENV.=
- 004-. ștergem variabila de mediu
AN_ENV_VARIABLE
folosind metodaENV.delete
- 005- încercăm să accesăm
AN_ENV_VARIABLE
și furnizăm o valoare implicită dacă aceasta nu există folosind metodaENV.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à !
.