Nastavení produkčního módu na základě url adresy

- 2bfree
 - Člen | 252
 
Zdarvím,
v předchozí verzi Nette jsem měl v bootstrap.php takovouhle zběsilou záležitost
<?php
/**
 * Loading nette framework
 */
 require(LIBS_DIR.DS.'Nette'.DS.'nette.min.php');
/**
 * Development workaround
 */
 if(($_SERVER['SERVER_NAME']=="project-prod.localhost")&&($_SERVER["SERVER_ADDR"]=="127.0.0.1")){
     Nette\Environment::setMode(Nette\Environment::DEVELOPMENT,FALSE);
     Nette\Environment::setMode(Nette\Environment::PRODUCTION,TRUE);
     Nette\Environment::setName('production');
 }
/**
 * Loading config
 */
 Nette\Environment::loadConfig();
/**
 * Setting Debug
 */
 if(Nette\Environment::getName()=='development'){
     NetteTranslator\Panel::register();
     Nette\Debug::$strictMode = TRUE;
     Nette\Debug::enable(Nette\Debug::DEVELOPMENT,Nette\Environment::getVariable("logDir"));
 } elseif(Nette\Environment::getName()=='production'){
     Nette\Debug::$strictMode = FALSE;
     Nette\Debug::enable(Nette\Debug::PRODUCTION,Nette\Environment::getVariable("logDir"), Nette\Environment::getVariable('technicalSupportEmail'));
 }
?>
Díky tomu jsem mohl na svém vývojovém stroji testovat, jak se chová
aplikace na produkčním prostředí.
Dnes už se to takhle dělat nedá. Chci se tedy zeptat:
- jak se nastavuje produkční prostředí
 - jak se správně dotazuje v jakém jsem prostředí
 

- 22
 - Člen | 1478
 
Mám takový pocit, že sice jsi v sekci DI, ale nepřečtl jsi o tom ani jedno slovo tady, jinak by ses asi takhle neptal. Takže pro začátek si projdi sandbox z poslední bety a pak ti bude jasný kod níže:
//v bootsrapu si zkus:
echo $configurator->container->params['productionMode'];
dump($configurator->container->params);
					Editoval 22 (9. 11. 2011 12:43)

- 2bfree
 - Člen | 252
 
Docela hodně jsem o tom četl všude možně. Sandboxem jsem se probral a
o existenci
$configurator->container->params[‚productionMode‘] vím.
Nevěděl jsem však, zda-li je to dnes jediný a tedy oficiálně správný způsob detekce prostředí, nebo jestli existuje někde getMode setMode.

- 2bfree
 - Člen | 252
 
Takže pro úplnost, kdyby někdo řešil stejný problém jako já, tak bootstrap.php v nové podobě vypadá takto:
<?php
use Nette\Diagnostics\Debugger,
    Nette\Application\Routers\Route;
// Load Nette Framework
$params['libsDir'] = __DIR__ . '/../libs';
require $params['libsDir'] . '/Nette/loader.php';
// Load configuration from config.neon file
$configurator = new Nette\Configurator;
$configurator->container->params += $params;
$configurator->container->params['tempDir'] = __DIR__ . '/../temp';
$container = $configurator->loadConfig(__DIR__ . '/config.neon');
// Development workaround
if(($_SERVER['SERVER_NAME']=="project-prod.localhost")&&($_SERVER["SERVER_ADDR"]=="127.0.0.1")){
    $configurator->container->params['productionMode']=TRUE;
}
// Enable Nette Debugger for error visualisation & logging\
if($configurator->container->params['productionMode']){
    Debugger::$strictMode = TRUE;
    Debugger::enable(Debugger::PRODUCTION, __DIR__ . '/../log',$configurator->container->params['technicalSupportEmail']);
} else {
    Debugger::$strictMode = TRUE;
    Debugger::enable(Debugger::DEVELOPMENT, __DIR__ . '/../log');
}
// Setup router
$router = $container->router;
$router[] = new Route('index.php', 'Homepage:default', Route::ONE_WAY);
$router[] = new Route('<presenter>/<action>[/<id>]', 'Homepage:default');
// Configure and run the application!
$application = $container->application;
//$application->catchExceptions = TRUE;
$application->errorPresenter = 'Error';
$application->run();
?>