Detekce vývojového prostředí v bootstrap.php pro načtení dodatečných neon souborů

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

ahoj, mam v aplikaci neon soubor, ktery potrebuji nacist pouze pokud aplikace bezi ve vyvojovem rezimu (popr. v debug modu – popravde moc nerozumim, jaky je v tom rozdil, pkud vubec nejaky).

v bootstrap.php mam toto:

$configurator = new Nette\Configurator;
$configurator->enableDebugger(__DIR__ . '/../log');
$configurator->setTempDirectory(__DIR__ . '/../temp');
$configurator->addConfig(__DIR__ . '/config/config.neon');
$configurator->addConfig(__DIR__ . '/config/config.local.neon');
if ($configurator->isDebugMode()) {
    $configurator->addConfig(__DIR__ . '/config/dev.neon');
}

return $configurator->createContainer();

ovsem pokud mi aplikace bezi na localhostu, tak se ten dev.neon stejne nenacte.

kde muze byt problem?

Zuben45
Člen | 268
+
0
-

vyzkoušej nastavit

$configurator->setDebugMode(true);

já to řeším tak, že vše na web tahám přes git, takže jsem si odebral config.local.neon (pro mě testovací config), pushnul a poté s dalším pushem přidal do .gitignore bootstrap, a u sebe jsem opět přidal testovací config ;). Sice moc nepraktické, ale funkční :)

fary
Člen | 155
+
0
-

prisel jsem na jednu moznost.

misto

if ($configurator->isDebugMode()) {
    $configurator->addConfig(__DIR__ . '/config/dev.neon');
}

by se pouzilo:

if (getHostByName('localhost') === '127.0.0.1') {
    $configurator->addConfig(__DIR__ . '/config/dev.neon');
}

ovsem nevim, jestli je to uplne ok. mohla by nastat situace, ze by se na serveru tato podminka vyhodnotila jako pravda?

newPOPE
Člen | 648
+
+2
-

@fary pouzi ENVIRONMENT ktory si niekde nastavis (Apache, CLI, …)

a v bootstrape len nieco ako

if(getenv('ENVIRONMENT') === 'debug' /* pripadne ine prostredia*/) {...}

Editoval newPOPE (19. 7. 2016 15:23)

iguana007
Člen | 970
+
0
-

fary napsal(a):
ovsem nevim, jestli je to uplne ok. mohla by nastat situace, ze by se na serveru tato podminka vyhodnotila jako pravda?

Imho CLI

fary
Člen | 155
+
0
-

@ViPEr*CZ* bohuzel, tohle myslim funguje jenom na webu, ja to potrebuju vyresit jak na webu, tak i v cli. ale diky.

taky me napadlo vyresit to dvema vetvemi na gitu. master by byl kladicky vyvojova vetev, ze ktere by se delali vedlejsi vetve, ktere by se pak zpetne mergovaly do master vetve. druha vetev (napr. deploy) by byla vzdy o par komitu dale a neobsahovala by veci, jako knihovny a nastaveni, ktere by nebyly potreba na produkci.

ViPEr*CZ*
Člen | 817
+
0
-

newPOPE napsal(a):

@fary pouzi ENVIRONMENT ktory si niekde nastavis (Apache, CLI, …)

a v bootstrape len nieco ako

if(getenv('ENVIRONMENT') === 'debug' /* pripadne ine prostredia*/) {...}

Tak pak toto… a nebo stejně tak dobře parametricky. Třeba v PHPStormu si vytvoříš spouštěč a nastavíš parametr pro CLI skript. Pro www to pak zkombinuješ s předchozím příspěvkem. Možností bude asi více.

h4kuna
Backer | 740
+
0
-

Já bych to řešil přes config.local.neon, který máš na všech prostředích a pokud potřebuješ něco extra, tak než mít logiku v aplikaci tak si do toho config.local.neon přidej:

include:
    - dev.neon

Kde ten config.local.neon předpokládám že je neverzovaný.

Editoval h4kuna (25. 7. 2016 13:16)