Objekt ENV v jazyce Ruby

Dub 29, 2021
admin

Objekt ENV v jazyce. Ruby
Mehdi Farsi

Sledovat

19. července, 2018 – 3 minuty čtení

V tomto článku se budeme zabývat následujícími tématy:

  • objekt ENV
  • ENV a funkce standardní knihovny
  • ENV za scénou

Před začátkem

S radostí se s vámi podělím o náš nejnovější projekt: Zábavná fakta o Ruby – 1. díl

Prosím, neváhejte a sdílejte tento příspěvek! 🙏

Děkuji vám za váš čas!

ENV poskytuje rozhraní API pro manipulaci s proměnnými prostředí.

Působí jako Hash, poskytuje sadu metod pro přidávání, změnu, mazání a přístup k proměnným prostředí, které jsou rozhodně přívětivé pro Ruby

Ve výše uvedeném příkladu můžeme vidět stručné použití API:

  • 001- nastavíme hodnotu 'cool!' proměnné prostředí AN_ENV_VARIABLE pomocí metody ENV.=
  • 002- poté přistoupíme k hodnotě AN_ENV_VARIABLE pomocí metody ENV.
  • 003- změníme hodnotu AN_ENV_VARIABLE na 'great!' pomocí metody ENV.=
  • 004- odstraníme proměnnou prostředí AN_ENV_VARIABLE pomocí metody ENV.delete
  • 005- pokusíme se získat přístup k proměnné AN_ENV_VARIABLE a poskytneme výchozí hodnotu, pokud neexistuje, pomocí metody ENV.fetch

To je super ! Ale kde jsou systémové proměnné prostředí?“

ENV a funkce standardní knihovny

Objekt ENV se při správě proměnných prostředí spoléhá na funkce standardní knihovny jazyka C. V případě, že se jedná o systémové proměnné prostředí, je třeba je spravovat.

Příklad když zavoláte metodu ENV., pak Ruby zavolá příslušnou funkci standardní knihovny C v závislosti na vašem operačním systému – například getenv(3) pro unix-like OS – aby načetl příslušnou proměnnou prostředí.

Tento systém je efektivní a spoléhá na silnou standardní knihovnu.

Dále se přistupuje pouze k manipulovaným proměnným prostředí za běhu. Při spuštění programu Ruby se do paměti předem nenahrávají žádné proměnné prostředí.

Nyní se tedy podíváme na to, jak je ENV implementován za scénou.

ENV za scénou

ENV je objekt podobný hash. To znamená, že je to instance Object a že má spoustu metod podobných instanci Hash.

irb> ENV.class
=> Object

Za scénou objekt ENV překóduje metody podobné hash (jako ENV), aby mohl používat rodinu funkcí C *env(3). Objekt ENV je tedy jen obal jazyka Ruby na funkce jazyka C, které mají na starosti správu proměnných prostředí

Objekt ENV navíc rozšiřuje modul Enumerable, ale přepisuje spoustu metod tohoto modulu, například jako each a each_pair

irb> ENV.singleton_class.included_modules
=>

Pro shrnutí: ENV je „vyjmenovatelná“ instance Object uložená v globální konstantě.

Pro další informace si klidně projděte soubor hash.c.

Voilà !

.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.