Nette\Database a DebugBar

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

Poslední revize (nyní mám z 19. ledna) přestali zobrazovat v DebugBaru informace o databázi (dotazech). Asi 4 verze dozadu (určitě revize z 2011) to zobrazovali. Toto je naschvál a je potřeba si výpis něčím aktivovat nebo je to chyba?

PS: a ten nový výpis SystemContainer… no nevím zda je dobré tam pouštět údaje k DB + dá se třeba vypnout tento výpis nějak?

Editoval ViPEr*CZ* (22. 1. 2012 3:11)

ViPEr*CZ*
Člen | 817
+
0
-

Tak ve vývojové verzi ze včéra SystemContainer zmizel úplně… ale Diagnostics panelu stále není vidět nic od Nette\Database ?

uestla
Backer | 799
+
0
-

SystemContainer byl defaultně vypnut, zapnout se ale dá, např. přes NetteExtension:

common:
	nette:
		container:
			debugger: TRUE

Databáze by se měla připnout až když dojde k připojení / položí se dotaz, ni?

Jinak zapnutí jsem vyčetl (stejně jako možnost nastavit routy) přímo z kódu, a vypadá to na něco opravdu mocného. Jsem natěšený jak malé děcko, až k tomu vyjde nějaké oficiální prohlášení ;-P

Editoval uestla (22. 1. 2012 14:27)

ViPEr*CZ*
Člen | 817
+
0
-

Jj to mi došlo, že to bude vypnuté… Ono jak už jsem psal, jsou tam rovnou citlivé údaje k databázi.
Dotaz mi to 100% pokládá… Ještě tak před měsícem tam navíc výpis ohledně Database byl nonstop. Akorát tam bylo 0 dotazů. Teď tam v posledních verzích není vůbec. Ani když k nějakému dotazu dojde (a před měsícem to něco ukazovalo).
Zdrojové kódy Nette jsem nestudoval co se změnilo, že to nyní neukazuje vůnec nic.

Jan Jakeš
Člen | 177
+
0
-

Protože nepoužíváš database jako NetteExtension, tak jak jsem ti naznačoval výše, tak musíš debugger zapnout ručně (v konfigu ke službě databáze přidat debugger: TRUE). V NetteExtension je defaultně zapnutý: https://github.com/…xtension.php#L61

ViPEr*CZ*
Člen | 817
+
0
-

Aha, tak to je nějaká novinka… používám to takto:

common:
	php:
		date.timezone: Europe/Prague

	services:
		database:

Takže to je v services a ještě před to má přijít nette, aby to bylo defaultně zapnuté… budu muset zase nastudovat. Taktéž jsem nevěděl, že se to dá zapnout přes debugger: TRUE.

PS: tak ee zkouším si přidat debugger pro rychlost, ale toto nezná… a podle ServiceDefinition.php se mu ani nedivím.

Editoval ViPEr*CZ* (22. 1. 2012 17:38)

ViPEr*CZ*
Člen | 817
+
0
-

Tak tam asi bude nějaký error nebo jsem slepej.
Přes NetteExtension to funguje a v panelu mi to ukazuje výpis SQL dotazů, ale jen přes službu tak jak jsem to měl by to mělo jít taky automaticky… zběžně co jsem koukal na kód. Panel by se měl přidat taktéž sám, ale někde bude asi něco ještě co tomu zabrání cestou… zas úplně tak se mi to nechce zkoumat.

PS: jak si změním reflexi, když to mám přes NetteExtension? Jde to z konfigu nebo musím v bootstrapu?

Editoval ViPEr*CZ* (22. 1. 2012 18:55)

uestla
Backer | 799
+
0
-

Právěže automatické připojení na Debug bar až při položení dotazu se přesunulo do NetteExtension.

Doporučuju toho NetteExtension využít, protože ti mj. i při zpracování výjimky Laděnkou připne přímo DB panel…

Přímo v už odkazovaném sandboxu je ale ukázané, že si můžeš udělat něco jako alias

common:
	php:
		...
	nette:
		database:
			...
	services:
		database: @Nette\Database\Connection

A pak normálně přistupovat ke $container->database

ViPEr*CZ*
Člen | 817
+
0
-

Jj tak jsem to udělal.

  • takže jak jsem to měl v předchozí syntaxi už to nebude možné jednoduše přes konfig hodit do Debugger Panelu?
  • a teď jsem to ještě vyzkoušel na produkčním serveru se zapnutým
Nette\Diagnostics\Debugger::$productionMode = Nette\Diagnostics\Debugger::DEVELOPMENT;

a to se to celý zbláznilo a vidím tam už jen čas a paměť… a ten samý kód mi na localhostu jde ještě s Routama, Database a Identity. :-(

ViPEr*CZ*
Člen | 817
+
0
-

Tak jsem to udělal přes to NetteExtension.
Bohužel jsem nepřišel jak to mít hezky v konfigu a tak pokud chci jinou Reflexi, tak jsem musel nastavovat z bootstrap.php metodou setDatabaseReflection.
To samé pokud chci mít Panel i mimo localhost pro testy, tak musím nejenom mít tento řádek v bootstrap.php

Nette\Diagnostics\Debugger::$productionMode = Nette\Diagnostics\Debugger::DEVELOPMENT;

ale navíc musím ještě použít metodu z Nette\Config\Configurator

setProductionMode

abych se k panelu dostal.

David Grudl
Nette Core | 8228
+
0
-

ViPErCZ napsal(a):

Bohužel jsem nepřišel jak to mít hezky v konfigu a tak pokud chci jinou Reflexi, tak jsem musel nastavovat z bootstrap.php metodou setDatabaseReflection.

Lze ji nastavit i pomocí services. Konfiguraci dodám přímo do nette extension, ale chce to vymyslet syntax.

ViPErCZ napsal(a):
a to se to celý zbláznilo a vidím tam už jen čas a paměť… a ten samý kód mi na localhostu jde ještě s Routama, Database a Identity. :-(

Potvrzuju, věčná bolest konfigurace prostředí stále zůstává. Pokusím se s tím něco udělat.

brabo
Člen | 19
+
0
-

Ahoj, jsem z toho jelen. Existuje tedy rozumná možnost, jak připojení k databázi dělat jako službu a mít k dispozici původní debugbar s SQL dotazy?

Tj. mám toto:

services:
    database:
        class: BOraDatabase(
            'oci:dbname=%database.dsn%;charset=%database.charset%',
            '%database.user%',
            '%database.password%',
            null
        )
        setup:
            - setCacheStorage

Kvůli kompatibilitě chci instanci databáze získávat pořád jako getService(‚database‘).

David Grudl
Nette Core | 8228
+
0
-

V tuto chvíli ne. Ale chystám se to doplnit.