config s vlastní konfigurací (main) pro danný stroj

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

K vyzkoušení na githubu

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
+
0
-

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

h4kuna
Backer | 740
+
0
-

Ze by se nacetla sekce podle nazvu souboru? To se mi libi.

Myslenka celeho je aby stroj mel vlastni konfigurak a nebylo to vsechno v jednom a aby se hesla neverzovali.

h4kuna
Backer | 740
+
0
-

HosipLan napsal(a):
To co jsi napsal se do distribuce nikdy nedostane :)

Takže, když převezmu a dotáhnu to co jsi naspal, tak se to do Nette dostane?

Aby to tu nevytichlo, bud jasné ano nebo jasné ne…

Filip Procházka
Moderator | 4668
+
0
-

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.

h4kuna
Backer | 740
+
0
-

Nakonec jsem nechal main.xxx pac mi prislo ze to bude matouci, proste jeden danny a vis co dela nez kdyz budes mit development.xxx/production.xxx ukazka

Filip Procházka
Moderator | 4668
+
0
-

Mnohem lepší. Jenom nechápu, proč jsi odstranil tyto řádky.

h4kuna
Backer | 740
+
0
-

ja je neodstranival nevim proc…

se to ukazalo az na githubu

EDIT
Mam to tam hodit jeste jednou?

Editoval h4kuna (30. 8. 2011 20:17)

Filip Procházka
Moderator | 4668
+
0
-

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
Patrik Votoček
Člen | 2221
+
0
-

super to se hodí :-) jen to uhladit

h4kuna
Backer | 740
+
0
-

je to pullnute

Filip Procházka
Moderator | 4668
+
0
-

<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>