Repository navigation
configuracao
Home > Colocar no ar > Configuração externa 🚧
Important
Em desenvolvimento (2.0). Ainda não está numa versão lançada e pode mudar.
Vale para a 2.0 · Delphi XE em diante e Lazarus/FPC 3.2 em diante · Nível: básico
Em uma frase: o TRALConfig junta a configuração de um arquivo, das variáveis de
ambiente e da linha de comando, e aplica nas propriedades do servidor e dos plugins.
Você vai precisar: o pacote RALHostingPackage.
uses RALConfig;
Config := TRALConfig.Create(Self);
Config.FileName := 'api.json';
Config.Load;
Config.Bind(Servidor, 'Server'); // Server.Port, Server.IPConfig.IPv4Bind...
Config.Bind(Limites, 'Limits'); // um plugin
Senha := Config.Get('Db.Password');| camada | exemplo |
|---|---|
padrão (SetDefault) |
Config.SetDefault('Server.Port', '8000') |
arquivo (.json, .ini ou .env, pela extensão) |
{"Server": {"Port": 8080}} |
ambiente (prefixo EnvPrefix, RAL_) |
RAL_SERVER__PORT=9090 (__ vira .) |
| linha de comando |
--Server.Port=9091 (e --config=outro.json troca o arquivo) |
As chaves não diferenciam maiúsculas. No JSON, objetos aninhados viram pontos
(Server.IPConfig.IPv4Bind) e uma lista de valores vira texto com vírgulas. No INI,
[Server] + Port=8080 é Server.Port.
Aplica as chaves às propriedades published do componente e de suas
subpropriedades (SSL, IPConfig), por TypInfo: números, textos, booleanos
(true/1/yes/on), enumerados pelo nome (smAsync), conjuntos ([amGET,amPOST]),
TStrings (texto com vírgulas). Componentes ligados (outro TComponent) ficam de fora.
Config.ReloadableProperties.Text := 'Limits.MaxRequestSize';
Host.OnReload := Recarregar; // SIGHUP ou "paramchange" do serviço
procedure TForm1.Recarregar(Sender: TObject);
begin
Config.Reload; // ou ReloadIfChanged: só se o arquivo mudou
end;Reload lê de novo e aplica aos objetos ligados só as chaves de
ReloadableProperties (vazia = todas); o resto pede reinício. OnChange avisa.
SafeValue('Db.Password') devolve *** para chaves com Password, Secret,
Token, Pwd ou terminadas em Key: use-o ao mostrar a configuração num log.
| sintoma | causa |
|---|---|
[RAL 6403] ao carregar |
o arquivo .json não é JSON válido |
| a variável de ambiente é ignorada | o nome tem um _ só: RAL_SERVER_PORT é a chave SERVER_PORT; use __
|
| número com vírgula vira erro | escreva 1.5; o arquivo não segue a configuração regional |
| no Linux, uma variável definida pelo próprio programa não aparece | o FPC lê o ambiente com que o processo nasceu; defina-a antes de iniciar |
Começar
Servidor
- Rotas e parâmetros
- Rotas avançadas: tipos, grupos, versões 🚧
- Ler o pedido e responder
- Objetos no corpo 🚧
- Resposta em fluxo 🚧
- Plugins 🚧
- Autenticação
- Banco de dados (DBWare)
- Servir site e arquivos
- Swagger e Postman
- Servidor SOAP 🚧
- WS-Security 🚧
- HTTPS
- Criptografia ponto a ponto
- Segurança para produção
- Colocar no ar
- Desempenho
- Testes em memória 🚧
MQTT 🚧
- O que é e quando usar 🚧
- Cliente MQTT 🚧
- Broker MQTT 🚧
- MQTT-SN 🚧
- Ponte REST 🚧
- Segurança 🚧
- Rede ruim 🚧
Cliente
Motores
Avançado
Ajuda
- Problemas comuns
- Atualizar o Indy
- Várias versões do Delphi
- Vídeos e guias
- Módulos de terceiros
- Licenças
- Contribuir
- Roadmap e changelog
🚧 = em desenvolvimento, pode mudar