O objecto ENV em Rubi
>
>
>
>
>>
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!'
paraAN_ENV_VARIABLE
variável de ambiente usando o métodoENV.=
> - 002- depois acessamos o valor de
AN_ENV_VARIABLE
usando o métodoENV.
> - 003- modificamos o valor de
AN_ENV_VARIABLE
para'great!'
usando o métodoENV.=
> - 004- apagamos a variável de ambiente
AN_ENV_VARIABLE
usando o métodoENV.delete
- 005- tentamos acessar a variável
AN_ENV_VARIABLE
e fornecemos um valor padrão se ela não existir usando o métodoENV.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à !