config s vlastní konfigurací (main) pro danný stroj
- h4kuna
- Backer | 740
Fakta:
– globální sekce je common
- všechny prostředí dědí od common
- vždy se vybere jen jedno prostředí (production, development, console,
[definované uživatelem])
- když vyvyjí více lidí nezajímá je configurace ostatních
- nechceme aby se v konfigu udržovala citlivá data (přístup do produkční
db) a nasledně byla i verzována
Navrhované zlepšení:
– jeden globální config (config.neon/.ini)
- jeden config vazaný na fyzický stoj, nazval jsem ho (main.neon/.ini), otazka
zda dávat variabilitu názvu?
- zrušit prostředí definované uživatelem, v tuto chvíli to bude fungovat
i s ním, ale podle mě je zbytečné
Jak to funguje:
– main.neon je hledaný ve stejné složce jako config.neon
- závislost je na existenci main.neon, nexestuje-li vše se chová naprosto
stejně jako doposud
- existuje-li, nevyplňuje se z jakého prostředí se dědí, zdědí se
z nastaveného co vybere nette
Výsledek:
– na každém stroji můžete mít uloženou jinou konfiguraci a soubor
config.neon nenabírá na váze
- tyto soubory se nemusí verzovat (main.neon)
- zachovává defaultní chování, neexistuje-li (main.neon)
TODO:
– nějak inteligentně vyřešit když budu mít devel server a nette ho detekuje jako production jak mu říct toto je development (definovaná proměnna do které se budou moci přidávat domény 2./3.řádu, bude to mít závislost na Debugger, excetpion …)
config.neon
common:
php:
date.timezone: Europe/Prague
#parametry pro připojení k databázi
database:
hostname:
username:
password:
database:
charset: utf8
#parametry pro modely
models:
foo: bar
services:
robotLoader:
run: true
database:
class: DibiConnection
arguments: [%database%]
production < common:
development < common:
main.neon lokál Chrudoš
database:
hostname: 127.0.0.1
username: jiny
password: xxx
database: p_foo
main.neon lokál Čestmír
database:
hostname: localhost
username: root
password:
database: foo
Co si myslíte?
- Filip Procházka
- Moderator | 4668
Pěkný nápad. Provedení by bylo lepší soustředit do Configuratoru. To co jsi napsal se do distribuce nikdy nedostane :)
- coding standard
- špatně zvolená třída
Co takhle upravit v Nette\common\Configurator.php:101
$config = Nette\Config\Config::fromFile($file, $section);
$localFile = dirname($file) . DIRECTORY_SEPARATOR . $section . '.neon';
if (file_exists($localFile)) {
$localConfig = Nette\Config\Config::fromFile($localFile);
$config = Nette\Utils\Arrays::mergeTree($config, $localConfig);
}
píšu z hlavy…
+ ještě doplnit invalidaci do toho cache co tam je
- Filip Procházka
- Moderator | 4668
No to jak jsi to napsal je špatně z daných důvodů. Pokud to opravíš tak máš reálnou šanci, že to David pullne.
- Filip Procházka
- Moderator | 4668
Můžeš to zkusit, ten commit vypadá divně.
Doporučoval bych postup
$ git checkout -b feature-local-config master
# provedeš změny
$ git commit -a
$ git push github feature-local-config
# vytvoříš pull na githubu
- Filip Procházka
- Moderator | 4668
<ot>Super :) Ještě si vyplň u sebe na pracovním stroji
user.name
a user.email
a email si dej do svých
emailů na githubu, aby tě to poznalo a přiřadilo ke commitům
:)</ot>