Absolutní cesty v sekci includes + expanze proměnných

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

1) Sekce includes v konfiguraci Nette podporuje pouze relativní adresy. Chtěl bych mít možnost zadávat cesty absolutní.

includes:
	- /var/www/test/libs/foo/bar/config/config.neon

existuje důvod, proč to není povoleno?

2) Kdyby se doplnila podpora absolutních cest, jistě by nebylo na škodu implementovat i expanzi proměnných. Viz:

includes:
	- %libsDir%/foo/bar/config/config.neon

Tady nastává menší zádrhel, jelikož sekce parameters se zpracovává až v dalším kroku a tudíž proměnné nejsou v momentě řešení include sekcí dostupné.

Ve svém frameworku jsem upravil Nette\Config\Loader tak, aby umožňoval nastavovat proměnné předem (viz https://github.com/…g/Loader.php#L24) a ty pak expandoval.

Mám se pokusit o pull request, nebo řeším něco, co není žádoucí?

enumag
Člen | 2118
+
0
-

Knihovny v libsDir by spíš než svůj vlastní config.neon měly mít vlastní CompilerExtension.

Filip Procházka
Moderator | 4668
+
0
-

Přesně tak. Není důvod vkládat configy vendorů.

pepakriz
Člen | 246
+
0
-

S tím souhlasím, ale zároveň si myslím, že u vendorů, které mají jednu službu je příjemnější napsat krátký konfigurační soubor. (Ano, vím, že se dá načítat neon i z compilerExtension. Jde mi jen o co nejpřívětivější cestu)

enumag
Člen | 2118
+
0
-

@pepakriz: Je příjemnější v config.neon pro aplikaci napsat:

extensions:
	foo: FooNamespace\FooExtension

než nějaké fuj fuj include kde bys potřeboval znát přesné umístění toho neon souboru. Takhle se ti o to postará autoloading.

Nesnaž se zjednodušit si psaní extension, snaž se zjednodušit jejich použití.

pepakriz
Člen | 246
+
0
-

@enumag: Máš pravdu, sám to takto používám. Šlo mě hlavně o to, abych uvedl nějaký příklad pro užití absolutní cesty.

Existuje jiný důvod, proč není možné includovat absolutní adresy? Co kdybych chtěl includovat konfiguraci, kterou mi předpřipravil hosting, abych nemusel vyplňovat údaje do db? Něco jako:

includes:
    - %globalConfigDir%/config.neon
Filip Procházka
Moderator | 4668
+
0
-

Na includování konfigurace od hostingu existuje include php souborů

includes:
	- config.system.php
return array(
	'database' => array(
		'host' => $_ENV['DB_HOST'],
	)
);