[Dicas do Laravel] Como alterar temporariamente uma variável de ambiente laravel sem atualizar o arquivo .env

Imagine o seguinte cenário: você está trabalhando em um aplicativo laravel que despacha algumas tarefas para uma fila. Você observa em seu arquivo de log que uma tarefa específica está emitindo uma exceção, mas não é possível depurá-la diretamente (com dd() por exemplo), pois a tarefa é consumida por um trabalhador em outro lugar.

Uma maneira de depurar esse problema seria alterar a variável de ambiente QUEUE_DRIVER em seu arquivo .env para sync , depurar e, em seguida, reverter a alteração após a conclusão.

Ou imagine que você tenha um banco de dados de teste e precise executar as migrações nele primeiro, e seria necessário atualizar o arquivo .env para usar o banco de dados de teste primeiro, executar as migrações e reverter a alteração.

Como você pode ver, em ambos os casos, tudo o que precisamos fazer é atualizar a variável de ambiente temporariamente. E normalmente, leva algum tempo para atualizar o arquivo .env (talvez seja necessário limpar a configuração ou reiniciar alguns trabalhadores).

Felizmente, é possível passar uma variável de ambiente para comandos do Linux, e essas variáveis ??serão usadas apenas para a execução atual.

No exemplo anterior, tudo o que precisamos fazer é executar o comando da seguinte forma:

QUEUE_DRIVER=sync php artisan my-artisan-command-here

Você pode testá-lo sozinho com o funileiro.

Você pode até passar várias variáveis ??de ambiente como esta:

QUEUE_DRIVER=sync DB_DATABASE=testing php artisan my-artisan-command-here

Como você pode ver, este não é um truque específico para laravel, e você pode usá-lo sempre que se encontrar em uma situação na qual você precisa alterar temporariamente uma variável de ambiente.

Espero que você ache isso útil.

Texto original em inglês.

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *