Produkční & testovací databáze

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

Ahoj, řeším následující problém.

Mám projekt, který testuji na localhostu, ale čas od času jej nahraji i na produkční server, kde mám samozřejmě jinou cestu k datbázi. Je nějaký způsob jak napsat konfigurační soubor pro přístup do databáze tak abych jej nemusel nejlépe vůbec měnit?

Předpokládám, že řešení už bude někde popsáno, něco už jsem i našel ale moc mi to nefungovalo. Na druhou stranu se přiznám, že jsem moc nepátral, a proto se těším na případné odpovědi. ;-)

Díky. ;-)

Oli
Člen | 1215
+
0
-

Řešení je jednoduché:

common:
	parameters:
		database:
			driver: mysql
			host: localhost
			dbname: dbname
			user: root
			password:

	...

production < common:
	parameters:
		database:
			driver: mysql
			host: hosting_name
			dbname: hosting_dbname
			user: hosting_name
			password: hosting_password
Šaman
Člen | 2668
+
0
-

K tomu je určený config.local.neon. V něm je konfigurace pro konkrétní stroj – pokud budeš mít projekt s několika vývojáři na localhostu, testovacím a ostrým serverem, tak na každém počítači může být jinak nakonfigurovaná databáze.
Jediné, co si musíš pohlídat je, aby se při aktualizaci projektu nepřepsal tento soubor. Pokud používáš verzování, řeší se to tak, že tento soubor dáš do ignorelistu (a verzuješ třeba config.local.neon.example, ve kterém je šablona co všechno má tento soubor obsahovat).

//dodatek: jinak sekce už jsou ve vývojové sekci vypnuté, spoléhat se na nastavení režimu není dobré. Pokud si pak na ostrém serveru vynutíš laděnku (budeš lovit nějakou chybu, kterou ti to doma nedělá), tak při použití sekcí by se to snažilo připojit na datbázi pro localhost. (Pokud bys to dělal podle předchozího příspěvku). Samozřejmě můžeš sekce používat, ale spíš na nakonfigurování ladicích služeb v debug módu a databázi mít oddělenou do toho souboru config.local.neon. Tedy sekce neslouží pro konfiguraci na konkrétním stroji, ale pro konfiguraci specifickou pro určitý režim provozu.

Editoval Šaman (25. 8. 2013 14:55)

LukasN
Člen | 2
+
0
-

Díky vyzkouším. ;-)

buffus
Člen | 101
+
0
-

Před časem mi napadlo, jestli není volba názvů config.neon souborů v Sandboxu Nette

config.local.neon
a
config.neon

u vsuvky .local. trošku zavádění možná, protože při vývoji je pro aplikaci, kterou programuji, localem většinou PC na kterém dělám, ale po nahrání aplikace na server se pro stejnou aplikaci stává localem ten konkrétní produkční server, na kterém aplikace běží. Jak mám poznat z názvu souboru, kdy zafunguje config.local.neon?
Nebylo by vhodnější nazvat .neon soubory v Sandboxu nějak ve smyslu

local.development.neon / remote.production.neon

?

Šaman
Člen | 2668
+
0
-

buffus napsal(a):

Před časem mi napadlo, jestli není volba názvů config.neon souborů v Sandboxu Nette

config.local.neon
a
config.neon

u vsuvky .local. trošku zavádění možná, protože při vývoji je pro aplikaci, kterou programuji, localem většinou PC na kterém dělám, ale po nahrání aplikace na server se pro stejnou aplikaci stává localem ten konkrétní produkční server, na kterém aplikace běží. Jak mám poznat z názvu souboru, kdy zafunguje config.local.neon?
Nebylo by vhodnější nazvat .neon soubory v Sandboxu nějak ve smyslu

local.development.neon / remote.production.neon

?

  1. na každém stroji může aplikace běžet v jakémkoliv režimu, takže podle režimu se stroj poznat nedá (na localu se zkouší production, na ostrém serveru se aplikace může přepnout do development, kvůli chytání chyb, které to jinde nedělá)
  2. config.local.neon většinou není součástí repozitáře (tam bývá třeba config.local.neon.example) a na každém stroji, kde se aplikace instaluje se tento soubor musí vytvořit a vyplnit. Těch strojů, kde aplikace poběží mohou být i desítky a přece nebude součástí projektu mnoho souborů s nastavením localhostu každého vývojáře
  3. takže local je skutečně nastavení pro tento stroj, na kterém aplikace běží. Je to oddělené proto, aby bylo jasné které hodnoty si musí každý upravit podle sebe a taky proto, aby nepřepisoval celý hlavní config
  4. tohle celé nesouvisí s Nette, ale je to jen řešení použité v Sandboxu. Nic ti nebrání třeba detekovat IP a podle toho v bootstrapu načíst konfiguraci ve tvaru config.168.192.1.5.neon, nebo podle IP zvolit správný config (programmer, test, server).
llook
Člen | 407
+
0
-

Jak mám poznat z názvu souboru, kdy zafunguje config.local.neon?

Zafunguje vždycky. Akorát na různých strojích bude mít různý obsah.