Skip to content

Carga de variáveis de configuração de uma aplicação thrust. #18

@Brunomachadob

Description

@Brunomachadob

Gostariamos de criar um mecanismo que realiza a leitura de variáveis de configuração da plataforma a partir de diferentes sources, que seja de fácil configuração e utilização.

Dado o seguinte exemplo:

var server = require('http');
var router = require('router');

server.createServer(env('port'), router)

Gostariamos que a função env, por exemplo, consiga carregar esta informação de porta de várias fontes diferentes, de forma ordenada e com ordem de prioridade.

Até então pensamos em três fontes: config.json, environment e cmd arguments.
Segue abaixo os exemplos de utilização das três formas citadas, com base no exemplo acima:

config.json

Arquivo que já utilizamos hoje que pode conter várias configurações da aplicação e bibliotecas utilizadas.

{
    "port": 8778
}

environment

Utilizar o env da máquina para configuração de informações.

export port=8778
thrust startup.js

argumentos

Nova forma de passagem de parâmetros que estamos avaliando para o thrust v5.

thrust startup.js -port 8778

Com base nestas informações, gostariamos de levantar a discussão em relação as possíveis fontes (se devemos incluir/remover alguma) e da ordem de prioridade das mesmas.

Imagine, que em um determinado momento utilizamos as três fontes citadas acima, ou seja, temos o arquivo, fizemos export no env, e também passamos port como argumento.
Qual deve ser a prioridade das fontes?

Iniciamente eu e o @cneryjr discutimos e consideramos que os argumentos de linha de comando devem ser os de maior prioridade.

Como segundo e terceira ordem de prioridade, tivemos pensamentos divergentes e gostariamos de discutir aqui para que consigamos elaborar um sistema inteligente e que reflita bem todo o fluxo do desenvolvimento, desde o startup com o arquiteto até as fases de deploy em hml e produção.

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions