Ambiente e configuração
Variáveis de ambiente com padrão, a configuração que falha na partida — e o segredo que nunca vai para o arquivo.
A mesma imagem roda em desenvolvimento, homologação e produção; o que muda é o ambiente. Ler a configuração de variáveis — e não de um arquivo dentro da imagem — é o que deixa o mesmo artefato ir para os três lugares.
dataforge
adopt Arcane.OS as OS
porta := int(OS.get_env("PORTA", "8080"))
modo := OS.get_env("MODO", "desenvolvimento")
assert porta bigger 0
assert OS.get_env("VARIAVEL_QUE_NAO_EXISTE_AQUI") is void
assert not OS.has_env("VARIAVEL_QUE_NAO_EXISTE_AQUI")Falhe na partida, não no primeiro pedido#
Uma variável obrigatória que falta deveria impedir o programa de subir — com uma mensagem que diz qual —, e não estourar no primeiro pedido que precisa dela, às três da manhã:
dataforge
adopt Arcane.OS as OS
action exigir(nomes):
faltam := [n cycle n in nomes given not OS.has_env(n)]
given len(faltam) bigger 0:
trigger $"faltam variáveis de ambiente: {faltam.join(", ")}"
OS.set_env("BANCO_URL", "sqlite:///tmp/app.db")
exigir(["BANCO_URL"]) // passa
recusado := no
monitor:
exigir(["BANCO_URL", "CHAVE_DA_API"])
handle Error as e:
recusado := e.message.contains("CHAVE_DA_API")
assert recusado
OS.unset_env("BANCO_URL")