Il più delle volte, conservo la configurazione dell'applicazione di sviluppo nella directory principale del progetto, in questo modo:
app
|-- config.json
Ma questo non sembra essere l'approccio migliore, dal momento che questa configurazione finisce per essere memorizzata nel sistema di controllo della versione, con possibili nomi utente, password e altre cose sensibili trapelate.
12 La guida all'app Factor consiglia di eliminare completamente i file di configurazione e di utilizzare le variabili di ambiente per l'impostazione della configurazione:
... memorizza la configurazione nelle variabili di ambiente. I variatori ambientali sono facili da cambiare tra le distribuzioni senza cambiare alcun codice; a differenza dei file di configurazione, ci sono poche possibilità che vengano controllati accidentalmente nel repository di codice; e a differenza dei file di configurazione personalizzati o di altri meccanismi di configurazione come Proprietà di sistema Java, sono uno standard indipendente dal linguaggio e dal sistema operativo.
Mi sembra davvero carino, ma dove si memorizzano le variabili di ambiente, senza controllarle nel controllo del codice sorgente? E quali strumenti posso usare per passare quelle variabili all'app? Ci possono essere dozzine di opzioni di configurazione e digitarle a mano ogni volta che avvii l'app non è carino, quindi devono essere archiviate in qualche tipo di file da qualche parte. Detto file finirà quindi nel controllo del codice sorgente e torneremo da dove siamo partiti.
Esiste un modo universalmente accettato di gestire le opzioni di configurazione, che non ha il rischio di memorizzare la configurazione locale nel controllo del codice sorgente?
.gitignore
dove posso definire file o cartelle che non dovrebbero essere controllati nel controllo di versione. Come dici tu non vedo dove Env vars dovrebbe davvero aiutare, e hai uno script per impostarli e dovrebbero essere memorizzati insieme al progetto o li hai 'da qualche parte' sul tuo sistema (home directory o anche all'avvio delle macchine) script) che sembra creare molti problemi da solo, specialmente se è necessaria molta configurazione. In ogni caso, dividerei i file di configurazione in modo che le informazioni riservate vadano in file diversi.