Az ENV objektum Ruby-ban

ápr 29, 2021
admin
Az ENV objektum a Ruby
Mehdi Farsi

Follow

Júl 19, 2018 – 3 min read

Ebben a cikkben a következő témákat fogjuk megvizsgálni:

  • a ENV objektum
  • ENV és a szabványos könyvtári függvények
  • ENV a színfalak mögött

Előtte, hogy elkezdjük

Nagy örömmel osztom meg veletek legújabb projektünket: Fun Facts about Ruby – Volume 1

Kérem, bátran terjessze és ossza meg ezt a bejegyzést! 🙏

Köszönöm, hogy időt szakítottál rám!

ENV API-t biztosít a környezeti változók manipulálásához.

Azáltal, hogy úgy viselkedik, mint egy Hash, egy sor metódust biztosít a környezeti változók hozzáadásához, módosításához, törléséhez és eléréséhez, ami határozottan Ruby-barát

A fenti példában láthatjuk az API rövid használatát:

  • 001- a ENV.= metódus
  • 002- segítségével beállítjuk a 'cool!' értékét a AN_ENV_VARIABLE környezeti változónak
  • 002- majd a ENV. metódus
  • 003- a AN_ENV_VARIABLE értékét 'great!'-re módosítjuk a ENV.= metódus
  • 004- segítségével. töröljük a AN_ENV_VARIABLE környezeti változót a ENV.delete módszerrel
  • 005- megpróbáljuk elérni a AN_ENV_VARIABLE értékét, és ha nem létezik, akkor megadunk egy alapértelmezett értéket a ENV.fetch módszerrel

Ez király ! De hol vannak a rendszerkörnyezeti változók?

ENV és a szabványos könyvtári függvények

A ENV objektum a C szabványos könyvtári függvényekre támaszkodik a környezeti változók kezelésében.

Az ENV. metódus meghívásakor például a Ruby az operációs rendszertől függően meghívja a megfelelő C szabványos könyvtári függvényt – getenv(3) például unix-szerű OS esetén -, hogy lekérje a megfelelő környezeti változót.

Ez a rendszer hatékony és erős szabványos könyvtárra támaszkodik.

Ezeken kívül csak a futásidőben manipulált környezeti változókhoz férünk hozzá. A Ruby program indításakor nincs a memóriába előretöltött környezeti változó.

Most nézzük meg, hogyan valósul meg a ENV a színfalak mögött.

ENV a színfalak mögött

ENV egy hash-szerű objektum. Ez azt jelenti, hogy a Object egy példánya, és egy csomó olyan metódussal rendelkezik, amelyek hasonlóak a Hash egy példányához.

irb> ENV.class
=> Object

A színfalak mögött a ENV objektum átkódolja a hash-szerű metódusokat (mint ENV), hogy a *env(3) C függvénycsaládot használja. Tehát a ENV objektum csak egy Ruby wrapper a C függvényekre, amelyek a környezeti változók kezeléséért felelősek

Mégis a ENV objektum kiterjeszti a Enumerable modult, de felülírja ennek egy csomó metódusát, mint például each és each_pair

irb> ENV.singleton_class.included_modules
=>

Mégis a ENV egy globális konstansban tárolt Object “felsorolható” példánya.

Böngésszen nyugodtan a hash.c fájlban további információkért.

Voilà !

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.