2017-11-24 2 views
0

Ich muss in meiner Anwendung mehrere Verbindungen zu mehreren Datenbanken, eine für die Entwicklung, eine für Tests und andere für die Produktion festlegen. Ich habe auf Stack-Überlauf einige Tipps gefunden, um per URL zu erhalten und viele und verschiedene Einstellungen zu übergeben, also habe ich es in meiner App verbessert, aber ich habe festgestellt, dass wenn ich versuche, Migrationen laufen, die nicht funktionieren, weil das keine URL hat Passieren, gibt es einen anderen Weg, das zu tun? Oder beabsichtigen Sie, den App-Modus anders als heute zu verwalten? Dies könnte auch Debug als falsch definieren, wenn Produktion oder Test und wahr, wenn Entwicklung.Datenbankverwaltung CakePHP

+0

Müssen Sie zwischen Datenbanken aus der gleichen Weblocation wechseln? Weil ich mich normalerweise auf meinem eigenen Rechner entwickle, eine Testversion auf meinem eigenen Server aufstelle und schließlich auf dem Server des Kunden produzieren lasse. Welches sind drei verschiedene Standorte. – JvO

+0

Ja, das ist mein Fall, aber ich möchte eine Variable oder eine Methode festlegen, die ich nicht für jeden Ort, an dem meine App ausgeführt wird, anders konfigurieren muss. Daher brauche ich weniger Konfigurationen oder Konflikte zwischen meinen Zweigen . –

+0

Haben Sie in Erwägung gezogen, Umgebungsvariablen zu verwenden (die von den Hostkonfigurationen Ihres Servers stammen)? –

Antwort

1

Ich habe etwas wie, in meinem path.php Ich habe APP_MODE Variable als 'Entwicklung' dann in meiner app.php Ich erstelle eine Fall-Option, wenn diese Datenbank entwickeln, und App wird dieses Verhalten haben, wenn 'Tests' Diese Variablen Datenbank und dieses andere Verhalten, wenn 'Produktion' dann ein anderes. Dies hilft mir, viele Zweige für jeden APP_MODE zu erstellen, dann, wenn ich an Tests oder Produktion senden muss, mache ich einfach eine Zusammenführung und dann senden an jenkins deploy es

1

Überprüfen Sie, was der Hostname Ihres Entwicklungscomputers ist.

Unter Linux oder Windows:

hostname 

eine Kopie Ihrer app/config/app.default.php in eine Datei default anstelle des Wortes mit dem Host-Namen machen.

Bearbeiten Sie die app/Console/Installer.php Datei kann die createAppConfig Funktion wie folgt ändern:

public static function createAppConfig($dir, $io) 
{ 
    $appConfig = $dir . '/config/app.php'; 
    $defaultConfigPath = $dir . '/config/app.default.php'; 
    $hostnameConfigPath = $dir . '/config/app.' . gethostname() . '.php'; 
    $defaultConfig = file_exists($hostnameConfigPath) ? $hostnameConfigPath : $defaultConfigPath; 
    if (!file_exists($appConfig)) { 
     copy($defaultConfig, $appConfig); 
     $io->write('Created `config/app.php` file'); 
    } 
} 

Wenn Sie jetzt composer install auf Ihrem Projekt ausführen wird es entweder die app.default.php Konfiguration oder eine andere Konfiguration verwenden, die den Hostnamen des aktuellen Geräts übereinstimmt .

Dies koppelt alle Konfigurationseinstellungen an eine Umgebung oder einen Standard. Das könnte einige Ihrer Probleme lösen, aber wenn Sie Datenbanken auf Ihrer Entwicklungs-Workstation wechseln möchten. Es ist einfacher, die Datei app.php manuell zu bearbeiten. Wenn Sie etwas komplizierter als das tun müssen.

+0

Nicht schlecht. Ich benutze eine separate Konfigurationsdatei, die ich eine Ebene über dem Webroot und include() von index.php stelle. Platzieren Sie es außerhalb der Webroot bedeutet a) es kann nicht remote zugegriffen werden und b) es ist in der Regel außerhalb Ihrer Quellcodeverwaltung. – JvO