# Běh v režimu debug a release

> Volby Total.run() vybírají mezi režimem debug a release; režim čtěte z DEBUG a trasy omezte na jeden režim pomocí @debug a @release.

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

Total.js běží v jednom ze dvou režimů, **debug** pro vývoj a **release** pro server, a globální boolean `DEBUG` říká vašemu kódu, který je aktivní. V režimu debug aplikace běží pod watcherem, který ji restartuje při změně souboru, chyby ukazují podrobnosti a generují se source mapy. Režim release nemá watcher a chybové stránky neobsahují technické podrobnosti.

Režim určuje způsob spuštění aplikace, ve startovacím skriptu (`index.js`), který volá `Total.run(options)`:

- výchozí je debug s watcherem;
- `options.release = true` spustí režim release; startovací skript generovaný Total.js ho nastavuje z příkazové řádky, takže `node index.js --release` je způsob, jak spustit produkci;
- `options.watcher = false` spustí jeden proces bez watcheru a to je vždy režim release (používají ho příklady tohoto receptáře).

Dříve než o režimu rozhodne `Total.run()`, má `DEBUG` výchozí hodnotu z `NODE_ENV`: je `false`, když `NODE_ENV=production`, a jinak `true`. Kód, který se provede při načítání modulu, vidí tuto výchozí hodnotu, takže se na výsledný režim nespoléhejte na `NODE_ENV`, ale jen na `DEBUG` po spuštění aplikace.

Trasy mohou režim sledovat. Příznak `@debug` způsobí, že trasa existuje jen v režimu debug, a `@release` jen v režimu release; v druhém režimu URL odpoví 404. `@debug` použijte pro nástroje, které potřebujete při vývoji (prohlížeč databáze, trasa na testovací data), aby se nikdy omylem nedostaly do produkce.

```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' });
}
```
