Nastaveni v configu / bootstrapu produkcni a development

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

Ahoj, omlouvám se jestli to tady někde je. Dva dny jsem to hledal. Nedaří se mi nastavit v configu dvě db, jedna pro produkční a druhá pro development. Tedy spíš aby si to bral na hostingu z produkčního.

common:
	parameters:

	php:
		date.timezone: Europe/Prague
		# zlib.output_compression: yes


	nette:
		application:
			errorPresenter: Error

		session:
			autoStart: smart
			expiration: +30 days

		database:
			dsn: 'mysql:host=localhost;dbname=tasklist'
			user: 'dev_nette'
			password: 'pass'


	services:
		authenticator: TaskList\Authenticator

		tasks: TaskList\Tasks
		users: TaskList\Users
		tasklists: TaskList\TaskLists


	factories:

production < common:
dsn: 'mysql:host=wm5.wedos.net;dbname=dbname'
user: 'user'
password: 'pass'


development < common:

V boostrapu jsem zkoušel :

$configurator->addConfig(__DIR__ . '/config/config.neon', Nette\Config\Configurator::PRODUCTION);

Toto jsem až tak úplně nepochopil :

$environment = Nette\Config\Configurator::detectDebugMode('vaše ip adresa')
    ? $configurator::PRODUCTION : $configurator::DEVELOPMENT;
$configurator->addConfig(__DIR__ . '/config/config.neon', $environment);

Běžně si na na testovacim virtualu nastavuji SetEnv APPLICATION_ENV, ale tady jsem nejak nepobral kde mu mam rict ze se ma podivat jaka je ta konstanta a podle toho se zachovat…

Děkuji za odpověď.

Elijen
Člen | 171
+
0
-

Chybí ti tam sekce database a odsazení:

production < common:
	database:
		dsn: 'mysql:host=wm5.wedos.net;dbname=dbname'
		user: 'user'
		password: 'pass'
roghill
Člen | 21
+
0
-
Unexpected '=' on line 42, column 39. search►

Laděnka mi hlásí tuto chybu. Nechápu proč, když je to úplně stejné jako v commnon. Respective když tohle zkopíruju do common tak to funguje, v production ne.
To nemůže být configurační soubor normální např. jako v Zendu application.ini ? Ještě si dávat pozor jestli mi Netbeansy nekonvertují tabulátory na mezery atp.

Nyní tam mám tedy po pracném zkoumání kde mám jakou mezeru, nebo naopak nemám tabulátor toto :

Found sections 'database' in configuration, but corresponding extensions are missing

Editoval roghill (31. 8. 2012 12:36)

MartyIX
Člen | 217
+
0
-
production < common:
    parameters:           # zkus doplnit tuto radku :)
	database:
		dsn: 'mysql:host=wm5.wedos.net;dbname=dbname'
		user: 'user'
		password: 'pass'
roghill
Člen | 21
+
0
-

To jsem udělal a znovu se mi to na hostingu připojuje na common a ne na production. :-((

redhead
Člen | 1313
+
0
-

Nemá tam být náhodou i ta nette: řádka?

roghill
Člen | 21
+
0
-

Chová se to pořád stejně.
V bootstrapu mám :

// Configure application
$configurator = new Nette\Config\Configurator;
$configurator->setProductionMode(); # přestane fungovat laděnka - zapnutý produkční mod ?
$configurator->setDebugMode(TRUE); # zapnu si ladenku
// Enable Nette Debugger for error visualisation & logging
//$configurator->setDebugMode($configurator::AUTO);
$configurator->enableDebugger(__DIR__ . '/../log');


// Enable RobotLoader - this will load all classes automatically
$configurator->setTempDirectory(__DIR__ . '/../temp');
$configurator->createRobotLoader()
	->addDirectory(APP_DIR)
	->addDirectory(LIBS_DIR)
	->register();

// Create Dependency Injection container from config.neon file
$configurator->addConfig(__DIR__ . '/config/config.neon', 'production'); // jeste nacpu semproduction, dam-li nesmysl, spravne napise ze tato sekce v configu neni
$container = $configurator->createContainer();

// Setup router
$container->router[] = new Route('index.php', 'Homepage:default', Route::ONE_WAY);
$container->router[] = new Route('<presenter>/<action>[/<id>]', 'Homepage:default');


// Configure and run the application!
$container->application->run();

a stale se to snazi pripojit ke common …

Elijen
Člen | 171
+
0
-

Koukal jsem jak to mam já a sekce database patří pod services (logicky :)) … takhle to mám já:

common:
    services:
        database:
	    class: Nette\Database\Connection


production < common:
    services:
        database:
	    arguments: ['mysql:host=db.host.cz;dbname=dbname', 'login', 'heslo']


development < common:
    services:
        database:
            arguments: ['mysql:host=dev.host.cz;dbname=dbname', 'login', 'heslo']

Editoval Elijen (31. 8. 2012 15:33)

roghill
Člen | 21
+
0
-

tohle je fakt „wopruz“, to jsem dlouho u ničeho jinýho nezažil. Neustále mě to peskuje za mezery, který tam ale nemám (aspoň je tam nedělám, nevím jestli netbeans i přes zákaz converze nedělají mezery). Nedá se to nakonfigurovat jinak než přes ten config.neon. Nechápu jak se mohlo zvolit takové formátování jakéhokoliv souboru. Zkusím ten config překopat celej přes mezery, když je to postavený na Yamlu …

bazo
Člen | 620
+
0
-

mas na vyber bude medzery alebo tabulatory. yaml by ti huboval za tabulatory. neon je super. medzery ti tam moze pridavat netbeans automaticky. inak odporucam pouzivat tabulatory

roghill
Člen | 21
+
0
-

Takže se pokusím nějak shrnout.
Pokud dám do common nastavení na DB „produkcniho serveru“ tak mi to jede. To znamená, že rewrite mode, .htaccess a podobně je v pořádku. Pokud dám nastavení do sekce production a v bootstrapu nastavím že server je produkční (ověřím si to pomocí dump a die()), vyhodí mi to error 500. Pokud udělám záměrně v configu chybu, laděnka mi to zahlásí, takže je zapnutá. Tak proč mi sakra hází chybu 500 a neukáže mi wo co go ? Už jsem z toho fakt na prášky …

Editoval roghill (31. 8. 2012 17:59)

roghill
Člen | 21
+
0
-

Vyřešeno. Bylo to opravdu v configu a jen a jen ve formátování. Tři dny ztracený kvůli takový blbině … Proč dělat něco jednoduše když to jde složitě, že…

Děkuji všem co se mi snažili pomoci.

Editoval roghill (1. 9. 2012 19:07)