O objecto ENV em Rubi

Abr 29, 2021
admin
>

>

O objecto ENV em Ruby
>>

>

>

Mehdi Farsi

Follow

>

>

19 de julho, 2018 – 3 min leia-se

>

>>

Neste artigo vamos explorar os seguintes tópicos:

  • o ENV objeto
  • ENV e as funções da biblioteca padrão
  • ENV atrás da cena

Antes de começar

Estou entusiasmado por compartilhar com você nosso último projeto: Fun Facts about Ruby – Volume 1

Por favor, sinta-se à vontade para espalhar a palavra e compartilhar este post! 🙏

Obrigado pelo seu tempo!

ENV fornece uma API para manipular as variáveis de ambiente.

Ao agir como um Hash, ele fornece um conjunto de métodos para adicionar, alterar, excluir e acessar variáveis de ambiente que é definitivamente Ruby-friendly

No exemplo acima podemos ver um breve uso da API:

  • 001- definimos o valor de 'cool!' para AN_ENV_VARIABLE variável de ambiente usando o método ENV.=>
  • 002- depois acessamos o valor de AN_ENV_VARIABLE usando o método ENV.>
  • 003- modificamos o valor de AN_ENV_VARIABLE para 'great!' usando o método ENV.=>
  • 004- apagamos a variável de ambiente AN_ENV_VARIABLE usando o método ENV.delete
  • 005- tentamos acessar a variável AN_ENV_VARIABLE e fornecemos um valor padrão se ela não existir usando o método ENV.fetch

Isso é legal ! Mas onde estão as variáveis de ambiente do sistema?

ENV e as funções da biblioteca padrão

O objeto ENV depende das funções da biblioteca padrão C para gerenciar as variáveis de ambiente.

Por exemplo, quando você chama o método ENV. então Ruby chama a função apropriada da biblioteca padrão C dependendo do seu SO – getenv(3) para SO tipo unix por exemplo – para buscar a variável de ambiente apropriada.

Este sistema é eficiente e depende de uma biblioteca padrão forte.

Outras vezes, apenas as variáveis de ambiente manipuladas em tempo de execução são acessadas. Não há variáveis de ambiente pré-carregadas na memória na inicialização do programa Ruby.

Então, agora vamos dar uma olhada em como ENV é implementado atrás da cena.

ENV atrás da cena

ENV é um objeto parecido com um hash-. Isto significa que é uma instância de Object e que tem um monte de métodos semelhantes a uma instância de Hash.

irb> ENV.class
=> Object

Atrás da cena, o objeto ENV recodifica os métodos semelhantes a hash (como ENV) para usar a família de funções *env(3) C. Então o objeto ENV é apenas um wrapper Ruby sobre funções C que estão encarregadas de gerenciar as variáveis de ambiente

Outras vezes, o objeto ENV estende o módulo Enumerable mas substitui um monte de métodos deste módulo como each e each_pair por exemplo

irb> ENV.singleton_class.included_modules
=>

Para recapitular, ENV é uma instância “enumerável” de Object armazenada em uma constante global.

>

Feel free to browse the hash.c file for further information.

Voilà !

Deixe uma resposta

O seu endereço de email não será publicado.