Migrace z 2.3 na 2.4 – Tracy neni videt

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

Po premigrovani z 2.3 na 2.4 se mi prestal zobrazovat Debugbar od Tracy. Ve 2.3 pro jeji zobrazeni slouzil tento kod:

			$configurator->setDebugMode(true);
			$configurator->enableDebugger($rootDir . '/web/temp');
			Tracy\Debugger::$strictMode = false;
			Tracy\Debugger::$maxDepth = 2;
			Tracy\Debugger::$maxLen = 200;
			Tracy\Debugger::getBar()->addPanel(new Panel\DbPanel());

Po migraci na 2.4 vsak Tracy zmizela. Zkousel jsem jeste pridat Tracy\Debugger::enable(), ale bez uspechu :-(

Editoval DavidTheNewbie (5. 4. 2017 10:11)

Eda
Backer | 220
+
0
-

V Nette 2.4 je Tracy načítána samostatným requestem. Zkus se tedy podívat do developer konzole na request, který Tracy načítá. Možná z nějakého důvodu padá a háže 500, když si to otevřeš v novém panelu, vše bys měl vidět.

Taky jsem se s tím setkal. U jedné aplikace, která vyžadovala mít v URL určitý GET parametr, který v tom Tracy requestu pak samozřejmě chyběl…

DavidTheNewbie
Člen | 79
+
0
-

Eda napsal(a):

V Nette 2.4 je Tracy načítána samostatným requestem. Zkus se tedy podívat do developer konzole na request, který Tracy načítá. Možná z nějakého důvodu padá a háže 500, když si to otevřeš v novém panelu, vše bys měl vidět.

Taky jsem se s tím setkal. U jedné aplikace, která vyžadovala mít v URL určitý GET parametr, který v tom Tracy requestu pak samozřejmě chyběl…

V konzoli vidim uspesny request 200 na Tracy bar. Po prokliku na request se mi korektne zobrazi stranka s vyctem javaScriptu, ktery by mel, predpokladam, inicializovat Tracy. Do stranky aplikace se nacte kod viz nize.

<head>
	<style class="tracy-debug"> ..styles.. </style>
</head>

<body>
	<!-- Tracy Debug Bar -->
	<div id="tracy-debug" data-id="d8866a7edb" data-nonce=""></div>
	<script src="?_tracy_bar=content.d8866a7edb&amp;XDEBUG_SESSION_STOP=1"></script>
</body>

Predpokladam, ze box id=„tracy-debug“ by mel obsahovat strukturu Tracy, je vsak prazdny :-(

Editoval DavidTheNewbie (4. 4. 2017 6:45)

Eda
Backer | 220
+
0
-

JS chyby v konzoli žádné?

DavidTheNewbie
Člen | 79
+
0
-

Eda napsal(a):

JS chyby v konzoli žádné?

Chybu bych v konzoli uvital, abych mohl pripadne zasahnout. Je vsak cista. Nemusi se nahodou krom povoleni debuggeru nastavovat jeste typ prostredi?

Editoval DavidTheNewbie (4. 4. 2017 20:11)

PetrHH
Člen | 49
+
0
-

DavidTheNewbie napsal(a):

Eda napsal(a):

JS chyby v konzoli žádné?

Chybu bych v konzoli uvital, abych mohl pripadne zasahnout. Je vsak cista. Nemusi se nahodou krom povoleni debuggeru nastavovat jeste typ prostredi?

Ještě bych zkusil vyhodit to načítání DB panelu a pak jedině mrknout do logu webserveru, třeba tam bude něco zajímavého.

DavidTheNewbie
Člen | 79
+
0
-

PetrHH napsal(a):

DavidTheNewbie napsal(a):

Eda napsal(a):

JS chyby v konzoli žádné?

Chybu bych v konzoli uvital, abych mohl pripadne zasahnout. Je vsak cista. Nemusi se nahodou krom povoleni debuggeru nastavovat jeste typ prostredi?

Ještě bych zkusil vyhodit to načítání DB panelu a pak jedině mrknout do logu webserveru, třeba tam bude něco zajímavého.

Nastaveni Debuggeru jsem stahl na toto minimum:

			$configurator->setDebugMode(true);
			$configurator->enableTracy($rootDir . '/web/temp');
			Debugger::$strictMode = false;
			Debugger::$maxDepth = 2;
			Debugger::$maxLen = 200;

V HTTPD access logu vse vypada vporadku:

[04/Apr/2017:21:13:58 +0200]
"GET /?_tracy_bar=content.68c61b3784&XDEBUG_SESSION_STOP=1
HTTP/1.1" 200 36399 "https://myapp.local:8081/"
"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.110 Safari/537.36"
myapp.local:8081 "-" "-"

Tracy ale stale nikde :-(

Editoval DavidTheNewbie (4. 4. 2017 22:42)

Ot@s
Backer | 476
+
0
-

Do bootstrapu přidej:

\Tracy\Debugger::$productionMode = false;
DavidTheNewbie
Člen | 79
+
0
-

Ot@s napsal(a):

Do bootstrapu přidej:

\Tracy\Debugger::$productionMode = false;

Tuto promennou jsem nastavenou nemel. Diky. Kazdopadne jeji doplneni (+ promazani cache) neprobudilo Tracy k zivotu :-(

Ot@s
Backer | 476
+
0
-

DavidTheNewbie napsal(a):

Ot@s napsal(a):

Do bootstrapu přidej:

\Tracy\Debugger::$productionMode = false;

Tuto promennou jsem nastavenou nemel. Diky. Kazdopadne jeji doplneni (+ promazani cache) neprobudilo Tracy k zivotu :-(

Před časem jsem řešil stejný problém jako Ty. Následující nastavení mi zprovoznílo obojí (laděnku i debugbar):

$configurator = new Nette\Configurator;
$configurator->enableTracy('../log'); // doplň si správnou hodnotu
$configurator->setDebugMode(true);
\Tracy\Debugger::$strictMode = true;
\Tracy\Debugger::$productionMode = false;

Editoval Ot@s (5. 4. 2017 9:35)

Hug0
Člen | 35
+
0
-

Zkoušel jsi Requirements checker?

DavidTheNewbie
Člen | 79
+
0
-

Hug0 napsal(a):

Zkoušel jsi Requirements checker?

Requirements checker hlasi vse v zelenem, tj. prostredi OK.

DavidTheNewbie
Člen | 79
+
0
-

Ot@s napsal(a):

DavidTheNewbie napsal(a):

Ot@s napsal(a):

Do bootstrapu přidej:

\Tracy\Debugger::$productionMode = false;

Tuto promennou jsem nastavenou nemel. Diky. Kazdopadne jeji doplneni (+ promazani cache) neprobudilo Tracy k zivotu :-(

Před časem jsem řešil stejný problém jako Ty. Následující nastavení mi zprovoznílo obojí (laděnku i debugbar):

$configurator = new Nette\Configurator;
$configurator->enableTracy('../log'); // doplň si správnou hodnotu
$configurator->setDebugMode(true);
\Tracy\Debugger::$strictMode = true;
\Tracy\Debugger::$productionMode = false;

Nastavil jsem presne krom strictMode, ktery musim dat na false, jelikoz se refaktoruje starsi kod a true mod by si vyzadal spoustu oprav, nez by appka vubec korektne nahrala a prezentovala obsah.

S nastavenim:

use Tracy\Debugger;
use Nette\Configurator;

$configurator = new Configurator;
$configurator->enableTracy('cesta_k_memu_logu');
$configurator->setDebugMode(true);
Debugger::$strictMode = false; // viz co uvadim vyse
Debugger::$productionMode = false;

Bez nahlaseni jakekoliv chyby vsak Debugbar chybi.

Editoval DavidTheNewbie (5. 4. 2017 10:10)

Hug0
Člen | 35
+
0
-

DavidTheNewbie napsal(a):

Hug0 napsal(a):

Zkoušel jsi Requirements checker?

Requirements checker hlasi vse v zelenem, tj. prostredi OK.

A nemůže ti ten javascript blokovat nějaký doplněk prohlížeče? Můžeš to zkusit v jiném prohlížeči?

DavidTheNewbie
Člen | 79
+
0
-

Hug0 napsal(a):

DavidTheNewbie napsal(a):

Hug0 napsal(a):

Zkoušel jsi Requirements checker?

Requirements checker hlasi vse v zelenem, tj. prostredi OK.

A nemůže ti ten javascript blokovat nějaký doplněk prohlížeče? Můžeš to zkusit v jiném prohlížeči?

V jinem prohlizeci je stejna situace, tj. po Debugbaru k Tracy zadna stopa. V ramci testu jsem dokonce zasel tak daleko, ze jsem si nechal naprosto prazdny dokument, tj. prazdny HEAD tag a prazdny BODY tag. Nicmene i na takto ciste strance se pri konfiguraci:

use Tracy\Debugger;
use Nette\Configurator;

$configurator = new Configurator;
$configurator->enableTracy('cesta_k_memu_logu');
$configurator->setDebugMode(true);
Debugger::$strictMode = false;
Debugger::$productionMode = false;

..neni Debugbar videt, byt je v konzoli uspesny dotaz na tracy:

https://myapp.local:8081/?_tracy_bar=content.d7012b3c97&XDEBUG_SESSION_STOP=1

Tracy jako takova asi funguje ok, jelikoz kdyz nastane chyba, tato se v duchu a grafice Tracy generuje, Debugbar vsak nikde neni videt :-(

Editoval DavidTheNewbie (5. 4. 2017 21:17)

DavidTheNewbie
Člen | 79
+
0
-

Nasel jsem zdroj nezobrazovani Debugbaru k Tracy. Je to proto, ze soubor loader.phtml v composeru Tracy ma prirazenu hodnotu k promenne $contentId viz:

<?php
namespace Tracy;

use Tracy;

$nonceAttr = $nonce ? ' nonce="' . Helpers::escapeHtml($nonce) . '"' : '';
?>

<!-- Tracy Debug Bar -->
<div id="tracy-debug" data-id="<?= Helpers::escapeHtml($contentId) ?>" data-nonce="<?= $nonce ?>"></div>
<?php if ($contentId /*TENTO BLOK SE VYKONA, ALE NEZOBRAZUJE MI DEBUGBAR :-(*/): ?>

<script src="?_tracy_bar=<?= urlencode("content.$contentId") ?>&amp;XDEBUG_SESSION_STOP=1"<?= $nonceAttr ?>></script>

<?php else: /*KDYBY VYKONAL TENTO BLOK, DEBUGBAR SE ZOBRAZI*/ ?>

<script src="?_tracy_bar=js&amp;v=<?= urlencode(Debugger::VERSION) ?>&amp;XDEBUG_SESSION_STOP=1"<?= $nonceAttr ?>></script>

<script<?= $nonceAttr ?>>
Tracy.Debug.init(<?= json_encode($content) ?>, <?= json_encode($dumps) ?>);
</script>

<?php endif ?>

.. Kdyz je $contentId bez hodnoty, tj. ve stavu false, vygeneruje se script v else blocku a Debugbar se zobrazi.

Promenna $contentId nabyde hodnoty v souboru Bar.php, protoze $useSession nabyde hodnoty true viz:

public function render()
		...
		// !!! ZDE NABYDE $useSession HODNOTY TRUE, COZ NAPLNI $contentId VIZ NIZE
		$useSession = $this->useSession && session_status() === PHP_SESSION_ACTIVE;
		...

		} else {
			$rows[] = (object) ['type' => 'main', 'panels' => $this->renderPanels()];
			$dumps = Dumper::fetchLiveData();
			foreach (array_reverse((array) $redirectQueue) as $info) {
				$rows[] = (object) ['type' => 'redirect', 'panels' => $info['panels']];
				$dumps += $info['dumps'];
			}
			$redirectQueue = NULL;
			// !!! ZDE SE PRIRADI HODNOTA KE $contentId
			$contentId = $useSession ? substr(md5(uniqid('', TRUE)), 0, 10) : NULL;
		}

… Netusite nekdo, jak dostat $useSession na false, jelikoz tato moznost mi jako jedina konecne zobrazy Debugbar k Travy?

Editoval DavidTheNewbie (6. 4. 2017 23:04)