Nastavení různých temp a cache adresářů dle prostředí

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

Zdravím,

kdysi jsem řešil , kterak dosáhnout ukládání produkčního a vývojového cache a temp do různých adresářů.
V předchozích verzích Nette se to nakonec dalo vyřešit velice jednoduše v config.ini

[production < common]
variable.tempDir = %appDir%/temp/production

[development < common]
variable.tempDir = %appDir%/temp/development

V současnosti jsem se pokusil o config.neon

production < common:
	variables:
		tempDir: %systemRoot%/temp/production

development < common:
	variables:
		tempDir: %systemRoot%/temp/development

Ale narazil jsem na problém, že /Nette/common/Configurator.php inicializuje templateCahceStorage dříve, než zpracuje config.neon

Existuje tedy nějaký způsob, kterak ukládat cache a temp do adresáře dle prostředí?

Editoval 2bfree (11. 11. 2011 15:08)

bojovyletoun
Člen | 667
+
0
-

řešil bych to nějak takhle

<?php
use Nette\Diagnostics\Debugger,...;
$libs = __DIR__ . '/../../../libs';
require $libs . '/Nette/loader.php';
$cf = new \Nette\Configurator();
$c = $cf->container;
$c->params['libsDir'] = $libs;
$c->params['appDir'] = __DIR__;
$c->params['tempDir'] = __DIR__ . ($c->params['productionMode']?  '/tempProd' : '/tempDeveloper');
2bfree
Člen | 248
+
0
-

Díky za tip. Také mi to mohlo dojít. ;) Takže stávající řešení je:

<?php
// Load Nette Framework
require $params['libsDir'].DIRECTORY_SEPARATOR.'Nette'.DIRECTORY_SEPARATOR.'loader.php';

// Prepare system DI container
$configurator = new Nette\Configurator;

// Diferent temp dir for production environment
if($configurator->container->params['productionMode']==TRUE){
    $params['tempDir'] = realpath($params['tempDir'].DIRECTORY_SEPARATOR.'Production');
} else {
    $params['tempDir'] = realpath($params['tempDir'].DIRECTORY_SEPARATOR.'Development');
}

// Load params into system DI container
$configurator->container->params += $params;
?>