# Beh v režime debug a release

> Možnosti Total.run() volia medzi režimom debug a release; režim čítajte z DEBUG a trasy obmedzte na jeden režim pomocou @debug a @release.

Framework: total5
Product: Total.js 5 (total5@0.0.19)
Language: sk
Content-SHA256: ba1f17a5a24c97b873ab620665cbb218f7c5edb610e36d96867307ba7d232d2e
Snapshot: c0700e321579725c5cf4f5ace1ad7d2866d1b4f93c24a63c0b41b6b7998e976c
Sources: total5-installed@total5@0.0.19
Review: not-recorded

Total.js beží v jednom z dvoch režimov, **debug** na vývoj a **release** na server, a globálna boolean hodnota `DEBUG` hovorí vášmu kódu, ktorý je aktívny. V režime debug aplikácia beží pod watcherom, ktorý ju reštartuje pri zmene súboru, chyby ukazujú podrobnosti a generujú sa source mapy. Režim release nemá watcher a chybové stránky neobsahujú technické podrobnosti.

Režim určuje spôsob spustenia aplikácie, v štartovacom skripte (`index.js`), ktorý volá `Total.run(options)`:

- predvolený je debug s watcherom;
- `options.release = true` spustí režim release; štartovací skript generovaný Total.js ho nastavuje z príkazového riadka, takže `node index.js --release` je spôsob, ako spustiť produkciu;
- `options.watcher = false` spustí jeden proces bez watchera a to je vždy režim release (používajú ho príklady tohto receptára).

Predtým, než o režime rozhodne `Total.run()`, má `DEBUG` predvolenú hodnotu z `NODE_ENV`: je `false`, keď `NODE_ENV=production`, a `true` inak. Kód, ktorý sa vykoná pri načítaní modulu, vidí túto predvolenú hodnotu, takže sa na výsledný režim nespoliehajte na `NODE_ENV`, ale iba na `DEBUG` po spustení aplikácie.

Trasy môžu režim sledovať. Príznak `@debug` spôsobí, že trasa existuje len v režime debug, a `@release` len v režime release; v druhom režime URL odpovie 404. `@debug` použite pre nástroje, ktoré potrebujete pri vývoji (prehliadač databázy, trasa na testovacie dáta), aby sa nikdy omylom nedostali do produkcie.

```js controllers/mode.js
exports.install = function() {
	ROUTE('GET /mode/', mode);
	ROUTE('GET /tools/ @debug', tools);
	ROUTE('GET /status/ @release', status);
};

function mode($) {
	$.json({ debug: DEBUG });
}

function tools($) {
	$.json({ tools: true });
}

function status($) {
	$.json({ status: 'ok' });
}
```
