W większości przypadków przechowuję konfigurację aplikacji programistycznych w katalogu głównym projektu, w następujący sposób:
app
|-- config.json
Ale to nie wydaje się być najlepszym podejściem, ponieważ ta konfiguracja ostatecznie jest przechowywana w systemie kontroli wersji - prawdopodobnie skutkując wyciekiem nazw użytkowników, haseł i innych wrażliwych rzeczy.
12 Przewodnik po aplikacji Factor zaleca całkowite usunięcie plików konfiguracyjnych i użycie zmiennych środowiskowych do konfiguracji konfiguracji:
... przechowuje konfigurację w zmiennych środowiskowych. Zmian środowiska Env można łatwo zmieniać między wdrożeniami bez zmiany kodu; w przeciwieństwie do plików konfiguracyjnych, istnieje niewielkie prawdopodobieństwo przypadkowego sprawdzenia ich w repozytorium kodu; i w przeciwieństwie do niestandardowych plików konfiguracyjnych lub innych mechanizmów konfiguracyjnych, takich jak Java System Properties, są one standardem zależnym od języka i systemu operacyjnego.
To brzmi dla mnie naprawdę miło, ale gdzie przechowuje się wspomniane zmienne środowiskowe, bez sprawdzania ich w kontroli źródła? A jakich narzędzi mogę użyć do przekazania tych zmiennych do aplikacji? Może istnieć kilkadziesiąt opcji konfiguracji, a ręczne wpisywanie ich przy każdym uruchomieniu aplikacji nie jest przyjemne - więc muszą być gdzieś przechowywane w jakimś pliku. Wspomniany plik w ten sposób przejdzie w kontrolę źródła i wrócimy do miejsca, w którym zaczęliśmy.
Czy istnieje jakiś powszechnie akceptowany sposób obsługi opcji konfiguracji, który nie wiąże się z ryzykiem przechowywania konfiguracji lokalnej w kontroli źródła?
.gitignore
gdzie mogę zdefiniować pliki lub foldery, których nie należy sprawdzać w kontroli wersji. Jak mówisz, nie widzę, gdzie Vars var powinien naprawdę pomóc, eith masz skrypt, aby je ustawić i powinny być przechowywane razem z projektem lub masz je gdzieś w systemie (katalog domowy lub nawet przy uruchamianiu maszyn skrypty), które wydają się same w sobie powodować wiele problemów, zwłaszcza jeśli konieczna jest duża konfiguracja. W każdym razie podzieliłbym pliki konfiguracyjne, aby poufne informacje trafiły do różnych plików.