Nette 2.1 jak spustit laděnku / productionMode

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

Zdravim. Nasledujicim kodem spoustim laděnku/produkcni mod na zvolenou IP adresu.
Jak toto nastaveni provedu v Nette 2.1?

$configurator = new Nette\Config\Configurator;

$prod = $configurator->detectProductionMode(array("xxx.xxx.xxx.x"));
$configurator->addParameters(array(
  "environment" => $prod ? $configurator::PRODUCTION : $configurator::DEVELOPMENT,
  "productionMode" => $prod
));

V Nette 2.1 mi tento kod vrací nasledujici chybu:
Deprecated: Nette\Config\Configurator::detectProductionMode() is deprecated; use !detectDebugMode() instead. in

Jan Tvrdík
Nette guru | 2595
+
0
-

@motorcb: Které části té chybové hlášky nerozumíš?

motorcb
Člen | 552
+
0
-

Jan Tvrdík: Chybové hlášce rozumím, metoda je depricared. Jen nevím jakou metodou ji nahradit/jak to udělat správně.

Díky za rady

castamir
Člen | 629
+
0
-

use detectDebugMode() instead

viz API

motorcb
Člen | 552
+
0
-

Tak s depricated funkci jsem nahradil doporucovanou funkci detectDebugMode:

$prod = $configurator->detectDebugMode(array("xxx.xxx.xxx.xxx"));
$configurator->addParameters(array(
  "environment" => $prod ? $configurator::PRODUCTION : $configurator::DEVELOPMENT,
  "productionMode" => $prod
));

$prod mi vrací true. Ale stále se nezobrazuje laděnka – stále je mi zobrazována stránka:

Server Error
We're sorry! The server encountered an internal error and was unable to complete your request. Please try again later.
error 500

Nevěděl by někdo jak na to? V Nette 2.1?

Šaman
Člen | 2666
+
0
-

Jestli $prod je TRUE, tak "productionMode" => TRUE, takže žádná laděnka.

Prostě se změnila logika, standardní režim je produkční a ty si můžeš definovat podmínky, kdy se běží v debug. Předtím to bylo naopak. Takže dej před to $configurator->detectProductionMode(..) vykřičník a máš to stejné jako předtím. Anebo přepiš ty proměnné a podmínky.

Editoval Šaman (11. 5. 2013 13:27)

motorcb
Člen | 552
+
0
-

Šaman:

Díky za tip :-)
Dal jsem před funkci vykřičník:

$prod = !$configurator->detectDebugMode(array("xxx.xxx.xxx.xxx"));
$configurator->addParameters(array(
  "environment" => $prod ? $configurator::PRODUCTION : $configurator::DEVELOPMENT,
  "productionMode" => $prod
));

Ovšem laděnka se stále nespouští :-(
Stále chyba:

Server Error
We're sorry! The server encountered an internal error and was unable to complete your request. Please try again later.
error 500

Cache jsem promazal

castamir
Člen | 629
+
0
-

co máš na parametr v detectDebugMode()?

Jan Tvrdík
Nette guru | 2595
+
0
-

@motorcb: Achjo, co takhle zkontrolovat logy, zda mají složky temp a log správná oprávnění apod?

A správně by to mělo být takto:

$prod = !$configurator->detectDebugMode(array("xxx.xxx.xxx.xxx"));
$configurator->addParameters(array(
	"environment" => $prod ? $configurator::PRODUCTION : $configurator::DEVELOPMENT,
	"productionMode" => $prod,
	"debugMode" => !$prod,
));

Navíc $configurator::PRODUCTION a $configurator::DEVELOPMENT jsou taky deprecated.

motorcb
Člen | 552
+
0
-

Tak mám opět problém s laděnkou pro nejnovější Nette 2.1dev (stažené přes composer).

Laděnku spouštím tímto způsobem:

$prod = !$configurator->detectDebugMode(array("xx.xx.xx.xx"));
$configurator->addParameters(array(
    "environment" => $prod ? $configurator::PRODUCTION : $configurator::DEVELOPMENT,
    "productionMode" => $prod,
    "debugMode" => !$prod,
));

A spuštění končí chybou:

Nette\MemberAccessException
Call to undefined method Nette\PhpGenerator\ClassType::addExtend().

Koukal jsem do dokumentace, kde jsem našel:

$configurator->setDebugMode(TRUE);

Ovšem tento příkaz také nefunguje a končí stejnou chybou jako první příkaz.

Co dělám špatně a a jak bych měl správně zapínat laděnku pro Nette 2.1?