Jak na detekci beta prostředí v bootstrapu

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
nat
Člen | 12
+
0
-

Zdravím,

mám v aplikaci kterou vyvíjím tři různá prostředí:

  • localhost (debug mode, samostatná db)
  • beta.example.com (potřebuji povolit debug mode a používat speciální db)
  • example.com (produkční verze)

K tomu mám 3 konfigurační soubory:

  • config.local.neon
  • config.beta.neon
  • config.neon

Problém je, že nevím, jak nette vysvětlit, co má kdy použít. Problém je hlavně u beta.example.com. Při autodetekci, to spadne do config.neon, když zapnu debug mode spadne do config.local.neon. V obou případech to ignoruje config.beta.neon.

Detekuji, že jsem na beta.example.com a teď potřebuji vědět, jak říct nette, že má použít nastavení z config.beta.neon.

<?php
require __DIR__ . '/../vendor/autoload.php';

$configurator = new Nette\Configurator;

$configurator->enableDebugger(__DIR__ . '/../log');

$configurator->setTempDirectory(__DIR__ . '/../temp');

$configurator->createRobotLoader()
	->addDirectory(__DIR__)
	->addDirectory(__DIR__ . '/../libs')
	->register();

$enviroment = Enviroment::getEnviroment(); // detekuje prostredi, ale nevím, jak ho predat dal.

$configurator->addConfig(__DIR__ . '/config/config.neon');
$configurator->addConfig(__DIR__ . '/config/config.beta.neon');
$configurator->addConfig(__DIR__ . '/config/config.local.neon');
$container = $configurator->createContainer();

return $container;
?>
David Grudl
Nette Core | 8116
+
+1
-

Prostě volej ty jednotlivé addConfig jen když splněná určitá podmínka. Takhle se ti načtou vždycky všechny tři nezávisle na prostředí.

Michal Hlávka
Člen | 190
+
0
-

Můžeš si oddělit prostředí podle remote_addr nebo taky podle toho, jestli jeden z těch tří souborů v aplikaci existuje, nebo taky podle…

Editoval emptywall (18. 7. 2016 14:22)

Jan Endel
Člen | 1016
+
+7
-

My to teda máme, že máme soubor config.local.neon, který je u vývojáře jiný než na serverech/betě.

(je šikovné, ho mít v .gitignore, ale naopak mít v gitu něco jako config.local.template.neon, který nový developer může hned používat).

CZechBoY
Člen | 3608
+
0
-

Jak psal @DavidGrudl

if ($_SERVER['HTTP_HOST'] === 'beta.example.com') {
	$configurator->addConfig(__DIR__ . '/config/config.beta.neon');
} elseif (strpos($_SERVER['HTTP_HOST'], 'localhost') !== false) {
	$configurator->addConfig(__DIR__ . '/config/config.local.neon');
} else {
	$configurator->addConfig(__DIR__ . '/config/config.production.neon');
}