# Rulează în modul debug și în modul release

> Opțiunile din Total.run() aleg între modul debug și release; citește modul din DEBUG și limitează rutele la un mod cu @debug și @release.

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

Total.js rulează într-unul din două moduri, **debug** pentru dezvoltare și **release** pentru server, iar booleanul global `DEBUG` îi spune codului tău care este activ. În modul debug aplicația rulează sub un watcher de fișiere care o repornește când modifici un fișier, erorile arată detalii și se generează source map-uri. Modul release nu are watcher, iar paginile de eroare nu arată detaliile tehnice.

Modul este ales de felul în care este pornită aplicația, în scriptul de pornire (`index.js`) care apelează `Total.run(options)`:

- implicit este debug, cu watcherul;
- `options.release = true` pornește modul release; scriptul de pornire generat de Total.js îl setează din linia de comandă, deci `node index.js --release` este modul de a porni producția;
- `options.watcher = false` rulează un singur proces fără watcher, iar acesta este întotdeauna modul release (este ceea ce folosesc exemplele acestui caiet de rețete).

Înainte ca `Total.run()` să decidă, `DEBUG` are o valoare implicită luată din `NODE_ENV`: este `false` când `NODE_ENV=production` și `true` în rest. Codul care rulează în momentul încărcării unui modul vede acea valoare implicită, așa că nu te baza pe `NODE_ENV` pentru modul final, ci doar pe `DEBUG` după ce aplicația a pornit.

Rutele pot urma modul. Flagul `@debug` face ca o rută să existe doar în modul debug, iar `@release` doar în modul release; în celălalt mod URL-ul răspunde cu 404. Folosește `@debug` pentru uneltele de care ai nevoie în timpul dezvoltării (un vizualizator de baze de date, o rută cu date de test), ca să nu ajungă niciodată din greșeală în producție.

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