Skip to content
mobius1qwe edited this page Nov 6, 2026 · 1 revision

Home > Colocar no ar > Configuração externa 🚧

Configuração por arquivo, ambiente e linha de comando

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');

Camadas (a de baixo vence)

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.

Bind

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.

Recarregar

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.

Segredos

SafeValue('Db.Password') devolve *** para chaves com Password, Secret, Token, Pwd ou terminadas em Key: use-o ao mostrar a configuração num log.

Erros comuns

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

Veja também

Clone this wiki locally