Nette\Database a DebugBar
- ViPEr*CZ*
- Člen | 817
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)
- uestla
- Backer | 799
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
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
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
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
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
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
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
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
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
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‘).